74 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=aarch64 -mattr=+sve < %s | FileCheck %s3 4; Test that we do not end in an infinite loop (https://github.com/llvm/llvm-project/issues/63322)5 6declare void @llvm.masked.scatter.nxv16i8.nxv16p0(<vscale x 16 x i8>, <vscale x 16 x ptr>, i32 immarg, <vscale x 16 x i1>)7 8define fastcc i8 @allocno_reload_assign(ptr %p) {9; CHECK-LABEL: allocno_reload_assign:10; CHECK: // %bb.0:11; CHECK-NEXT: movi d0, #000000000000000012; CHECK-NEXT: ptrue p0.d13; CHECK-NEXT: cmpeq p0.d, p0/z, z0.d, #014; CHECK-NEXT: uzp1 p0.s, p0.s, p0.s15; CHECK-NEXT: uzp1 p0.h, p0.h, p0.h16; CHECK-NEXT: uzp1 p8.b, p0.b, p0.b17; CHECK-NEXT: mov z0.b, p8/z, #1 // =0x118; CHECK-NEXT: fmov w8, s019; CHECK-NEXT: movi v0.2d, #000000000000000020; CHECK-NEXT: mvn w8, w821; CHECK-NEXT: sbfx x8, x8, #0, #122; CHECK-NEXT: whilelo p0.b, xzr, x823; CHECK-NEXT: punpklo p1.h, p0.b24; CHECK-NEXT: punpkhi p0.h, p0.b25; CHECK-NEXT: punpklo p2.h, p1.b26; CHECK-NEXT: punpkhi p4.h, p1.b27; CHECK-NEXT: punpklo p6.h, p0.b28; CHECK-NEXT: punpkhi p0.h, p0.b29; CHECK-NEXT: punpklo p1.h, p2.b30; CHECK-NEXT: punpkhi p2.h, p2.b31; CHECK-NEXT: punpklo p3.h, p4.b32; CHECK-NEXT: punpkhi p4.h, p4.b33; CHECK-NEXT: punpklo p5.h, p6.b34; CHECK-NEXT: punpkhi p6.h, p6.b35; CHECK-NEXT: punpklo p7.h, p0.b36; CHECK-NEXT: punpkhi p0.h, p0.b37; CHECK-NEXT: .LBB0_1: // =>This Inner Loop Header: Depth=138; CHECK-NEXT: uunpklo z1.h, z0.b39; CHECK-NEXT: uunpklo z2.s, z1.h40; CHECK-NEXT: uunpkhi z1.s, z1.h41; CHECK-NEXT: uunpklo z3.d, z2.s42; CHECK-NEXT: uunpkhi z2.d, z2.s43; CHECK-NEXT: st1b { z3.d }, p1, [z0.d]44; CHECK-NEXT: st1b { z2.d }, p2, [z0.d]45; CHECK-NEXT: uunpklo z2.d, z1.s46; CHECK-NEXT: uunpkhi z1.d, z1.s47; CHECK-NEXT: st1b { z2.d }, p3, [z0.d]48; CHECK-NEXT: uunpkhi z2.h, z0.b49; CHECK-NEXT: uunpklo z3.s, z2.h50; CHECK-NEXT: uunpkhi z2.s, z2.h51; CHECK-NEXT: st1b { z1.d }, p4, [z0.d]52; CHECK-NEXT: uunpklo z1.d, z3.s53; CHECK-NEXT: st1b { z1.d }, p5, [z0.d]54; CHECK-NEXT: uunpkhi z1.d, z3.s55; CHECK-NEXT: st1b { z1.d }, p6, [z0.d]56; CHECK-NEXT: uunpklo z1.d, z2.s57; CHECK-NEXT: st1b { z1.d }, p7, [z0.d]58; CHECK-NEXT: uunpkhi z1.d, z2.s59; CHECK-NEXT: st1b { z1.d }, p0, [z0.d]60; CHECK-NEXT: str p8, [x0]61; CHECK-NEXT: b .LBB0_162 br label %163 641: ; preds = %1, %065 %constexpr = icmp eq <vscale x 16 x ptr> insertelement (<vscale x 16 x ptr> poison, ptr null, i64 0), zeroinitializer66 %constexpr1 = shufflevector <vscale x 16 x i1> %constexpr, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer67 %constexpr2 = xor <vscale x 16 x i1> %constexpr1, shufflevector (<vscale x 16 x i1> insertelement (<vscale x 16 x i1> poison, i1 true, i64 0), <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer)68 call void @llvm.masked.scatter.nxv16i8.nxv16p0(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x ptr> zeroinitializer, i32 0, <vscale x 16 x i1> %constexpr2)69 store <vscale x 16 x i1> %constexpr, ptr %p, align 1670 br label %171}72 73uselistorder <vscale x 16 x i1> poison, { 1, 2, 0 }74