453 lines · plain
1# RUN: llc --verify-machineinstrs -mtriple=aarch64 -o - %s -mcpu=a64fx -aarch64-enable-pipeliner -pipeliner-max-mii=100 -pipeliner-enable-copytophi=0 -debug-only=pipeliner -run-pass=pipeliner 2>&1 | FileCheck %s2 3# REQUIRES: asserts4 5# Verify that the order of the instructions is correct if they are scheduled in6# the same cycle and they have physical register dependencies.7 8# CHECK: Schedule Found? 19# CHECK: cycle {{[0-9]+}} (0) {{.*}} SUBS{{.*}} implicit-def $nzcv10# CHECK-NOT: cycle {{[0-9]+}} (0) {{.*}} implicit-def {{.*}} $nzcv11 12--- |13 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"14 15 declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #016 17 define dso_local noundef i32 @main(i32 noundef %argc, ptr nocapture noundef readnone %argv) local_unnamed_addr #1 {18 entry:19 %ret.i.i55 = alloca ptr, align 820 %ret.i.i = alloca ptr, align 821 %0 = load ptr, ptr %ret.i.i, align 822 br label %vector.ph23 24 vector.ph: ; preds = %for.inc20.i, %entry25 %lsr.iv1 = phi i64 [ %lsr.iv.next2, %for.inc20.i ], [ 0, %entry ]26 %indvars.iv45.i = phi i64 [ 0, %entry ], [ %indvars.iv.next46.i, %for.inc20.i ]27 %broadcast.splatinsert = insertelement <vscale x 4 x i64> poison, i64 %indvars.iv45.i, i64 028 %broadcast.splat = shufflevector <vscale x 4 x i64> %broadcast.splatinsert, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer29 br label %vector.body30 31 vector.body: ; preds = %vector.body, %vector.ph32 %lsr.iv3 = phi i64 [ %lsr.iv.next4, %vector.body ], [ %lsr.iv1, %vector.ph ]33 %lsr.iv = phi i64 [ %lsr.iv.next, %vector.body ], [ 2800, %vector.ph ]34 %vec.ind = phi <vscale x 4 x i64> [ zeroinitializer, %vector.ph ], [ %vec.ind.next.6, %vector.body ]35 %1 = mul nuw nsw <vscale x 4 x i64> %vec.ind, %broadcast.splat36 %2 = trunc <vscale x 4 x i64> %1 to <vscale x 4 x i32>37 %3 = urem <vscale x 4 x i32> %2, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)38 %4 = add nuw nsw <vscale x 4 x i32> %3, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)39 %5 = shl nuw nsw i64 %lsr.iv3, 240 %scevgep16 = getelementptr i8, ptr %0, i64 %541 %6 = add nuw nsw <vscale x 4 x i64> %vec.ind, %broadcast.splat42 %7 = trunc <vscale x 4 x i64> %6 to <vscale x 4 x i32>43 %8 = urem <vscale x 4 x i32> %7, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)44 %9 = icmp eq <vscale x 4 x i32> %8, zeroinitializer45 %10 = urem <vscale x 4 x i32> %7, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)46 %11 = icmp eq <vscale x 4 x i32> %10, zeroinitializer47 %12 = or <vscale x 4 x i1> %9, %1148 %13 = urem <vscale x 4 x i32> %7, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)49 %14 = icmp eq <vscale x 4 x i32> %13, zeroinitializer50 %15 = or <vscale x 4 x i1> %14, %1251 %16 = select <vscale x 4 x i1> %15, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %452 store <vscale x 4 x i32> %16, ptr %scevgep16, align 453 %vec.ind.next = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 4, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)54 %17 = mul nuw nsw <vscale x 4 x i64> %vec.ind.next, %broadcast.splat55 %18 = trunc <vscale x 4 x i64> %17 to <vscale x 4 x i32>56 %19 = urem <vscale x 4 x i32> %18, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)57 %20 = add nuw nsw <vscale x 4 x i32> %19, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)58 %21 = shl nuw nsw i64 %lsr.iv3, 259 %scevgep14 = getelementptr i8, ptr %0, i64 %2160 %scevgep15 = getelementptr i8, ptr %scevgep14, i64 1661 %22 = add nuw nsw <vscale x 4 x i64> %vec.ind.next, %broadcast.splat62 %23 = trunc <vscale x 4 x i64> %22 to <vscale x 4 x i32>63 %24 = urem <vscale x 4 x i32> %23, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)64 %25 = icmp eq <vscale x 4 x i32> %24, zeroinitializer65 %26 = urem <vscale x 4 x i32> %23, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)66 %27 = icmp eq <vscale x 4 x i32> %26, zeroinitializer67 %28 = or <vscale x 4 x i1> %25, %2768 %29 = urem <vscale x 4 x i32> %23, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)69 %30 = icmp eq <vscale x 4 x i32> %29, zeroinitializer70 %31 = or <vscale x 4 x i1> %30, %2871 %32 = select <vscale x 4 x i1> %31, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %2072 store <vscale x 4 x i32> %32, ptr %scevgep15, align 473 %vec.ind.next.1 = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 8, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)74 %33 = mul nuw nsw <vscale x 4 x i64> %vec.ind.next.1, %broadcast.splat75 %34 = trunc <vscale x 4 x i64> %33 to <vscale x 4 x i32>76 %35 = urem <vscale x 4 x i32> %34, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)77 %36 = add nuw nsw <vscale x 4 x i32> %35, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)78 %37 = shl nuw nsw i64 %lsr.iv3, 279 %scevgep12 = getelementptr i8, ptr %0, i64 %3780 %scevgep13 = getelementptr i8, ptr %scevgep12, i64 3281 %38 = add nuw nsw <vscale x 4 x i64> %vec.ind.next.1, %broadcast.splat82 %39 = trunc <vscale x 4 x i64> %38 to <vscale x 4 x i32>83 %40 = urem <vscale x 4 x i32> %39, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)84 %41 = icmp eq <vscale x 4 x i32> %40, zeroinitializer85 %42 = urem <vscale x 4 x i32> %39, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)86 %43 = icmp eq <vscale x 4 x i32> %42, zeroinitializer87 %44 = or <vscale x 4 x i1> %41, %4388 %45 = urem <vscale x 4 x i32> %39, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)89 %46 = icmp eq <vscale x 4 x i32> %45, zeroinitializer90 %47 = or <vscale x 4 x i1> %46, %4491 %48 = select <vscale x 4 x i1> %47, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %3692 store <vscale x 4 x i32> %48, ptr %scevgep13, align 493 %vec.ind.next.2 = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 12, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)94 %49 = mul nuw nsw <vscale x 4 x i64> %vec.ind.next.2, %broadcast.splat95 %50 = trunc <vscale x 4 x i64> %49 to <vscale x 4 x i32>96 %51 = urem <vscale x 4 x i32> %50, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)97 %52 = add nuw nsw <vscale x 4 x i32> %51, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)98 %53 = shl nuw nsw i64 %lsr.iv3, 299 %scevgep10 = getelementptr i8, ptr %0, i64 %53100 %scevgep11 = getelementptr i8, ptr %scevgep10, i64 48101 %54 = add nuw nsw <vscale x 4 x i64> %vec.ind.next.2, %broadcast.splat102 %55 = trunc <vscale x 4 x i64> %54 to <vscale x 4 x i32>103 %56 = urem <vscale x 4 x i32> %55, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)104 %57 = icmp eq <vscale x 4 x i32> %56, zeroinitializer105 %58 = urem <vscale x 4 x i32> %55, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)106 %59 = icmp eq <vscale x 4 x i32> %58, zeroinitializer107 %60 = or <vscale x 4 x i1> %57, %59108 %61 = urem <vscale x 4 x i32> %55, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)109 %62 = icmp eq <vscale x 4 x i32> %61, zeroinitializer110 %63 = or <vscale x 4 x i1> %62, %60111 %64 = select <vscale x 4 x i1> %63, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %52112 store <vscale x 4 x i32> %64, ptr %scevgep11, align 4113 %vec.ind.next.3 = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 16, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)114 %65 = mul nuw nsw <vscale x 4 x i64> %vec.ind.next.3, %broadcast.splat115 %66 = trunc <vscale x 4 x i64> %65 to <vscale x 4 x i32>116 %67 = urem <vscale x 4 x i32> %66, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)117 %68 = add nuw nsw <vscale x 4 x i32> %67, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)118 %69 = shl nuw nsw i64 %lsr.iv3, 2119 %scevgep8 = getelementptr i8, ptr %0, i64 %69120 %scevgep9 = getelementptr i8, ptr %scevgep8, i64 64121 %70 = add nuw nsw <vscale x 4 x i64> %vec.ind.next.3, %broadcast.splat122 %71 = trunc <vscale x 4 x i64> %70 to <vscale x 4 x i32>123 %72 = urem <vscale x 4 x i32> %71, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)124 %73 = icmp eq <vscale x 4 x i32> %72, zeroinitializer125 %74 = urem <vscale x 4 x i32> %71, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)126 %75 = icmp eq <vscale x 4 x i32> %74, zeroinitializer127 %76 = or <vscale x 4 x i1> %73, %75128 %77 = urem <vscale x 4 x i32> %71, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)129 %78 = icmp eq <vscale x 4 x i32> %77, zeroinitializer130 %79 = or <vscale x 4 x i1> %78, %76131 %80 = select <vscale x 4 x i1> %79, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %68132 store <vscale x 4 x i32> %80, ptr %scevgep9, align 4133 %vec.ind.next.4 = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 20, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)134 %81 = mul nuw nsw <vscale x 4 x i64> %vec.ind.next.4, %broadcast.splat135 %82 = trunc <vscale x 4 x i64> %81 to <vscale x 4 x i32>136 %83 = urem <vscale x 4 x i32> %82, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)137 %84 = add nuw nsw <vscale x 4 x i32> %83, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)138 %85 = shl nuw nsw i64 %lsr.iv3, 2139 %scevgep6 = getelementptr i8, ptr %0, i64 %85140 %scevgep7 = getelementptr i8, ptr %scevgep6, i64 80141 %86 = add nuw nsw <vscale x 4 x i64> %vec.ind.next.4, %broadcast.splat142 %87 = trunc <vscale x 4 x i64> %86 to <vscale x 4 x i32>143 %88 = urem <vscale x 4 x i32> %87, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)144 %89 = icmp eq <vscale x 4 x i32> %88, zeroinitializer145 %90 = urem <vscale x 4 x i32> %87, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)146 %91 = icmp eq <vscale x 4 x i32> %90, zeroinitializer147 %92 = or <vscale x 4 x i1> %89, %91148 %93 = urem <vscale x 4 x i32> %87, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)149 %94 = icmp eq <vscale x 4 x i32> %93, zeroinitializer150 %95 = or <vscale x 4 x i1> %94, %92151 %96 = select <vscale x 4 x i1> %95, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %84152 store <vscale x 4 x i32> %96, ptr %scevgep7, align 4153 %vec.ind.next.5 = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 24, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)154 %97 = mul nuw nsw <vscale x 4 x i64> %vec.ind.next.5, %broadcast.splat155 %98 = trunc <vscale x 4 x i64> %97 to <vscale x 4 x i32>156 %99 = urem <vscale x 4 x i32> %98, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)157 %100 = add nuw nsw <vscale x 4 x i32> %99, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 1, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)158 %101 = shl nuw nsw i64 %lsr.iv3, 2159 %scevgep = getelementptr i8, ptr %0, i64 %101160 %scevgep5 = getelementptr i8, ptr %scevgep, i64 96161 %102 = add nuw nsw <vscale x 4 x i64> %vec.ind.next.5, %broadcast.splat162 %103 = trunc <vscale x 4 x i64> %102 to <vscale x 4 x i32>163 %104 = urem <vscale x 4 x i32> %103, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 13, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)164 %105 = icmp eq <vscale x 4 x i32> %104, zeroinitializer165 %106 = urem <vscale x 4 x i32> %103, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 7, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)166 %107 = icmp eq <vscale x 4 x i32> %106, zeroinitializer167 %108 = or <vscale x 4 x i1> %105, %107168 %109 = urem <vscale x 4 x i32> %103, shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 11, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer)169 %110 = icmp eq <vscale x 4 x i32> %109, zeroinitializer170 %111 = or <vscale x 4 x i1> %110, %108171 %112 = select <vscale x 4 x i1> %111, <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> insertelement (<vscale x 4 x i32> poison, i32 999, i64 0), <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer), <vscale x 4 x i32> %100172 store <vscale x 4 x i32> %112, ptr %scevgep5, align 4173 %vec.ind.next.6 = add <vscale x 4 x i64> %vec.ind, shufflevector (<vscale x 4 x i64> insertelement (<vscale x 4 x i64> poison, i64 28, i64 0), <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer)174 %lsr.iv.next = add nsw i64 %lsr.iv, -28175 %lsr.iv.next4 = add nuw nsw i64 %lsr.iv3, 28176 %113 = icmp eq i64 %lsr.iv.next, 0177 br i1 %113, label %for.inc20.i, label %vector.body178 179 for.inc20.i: ; preds = %vector.body180 %indvars.iv.next46.i = add nuw nsw i64 %indvars.iv45.i, 1181 %lsr.iv.next2 = add nuw nsw i64 %lsr.iv1, 2800182 %exitcond48.not.i = icmp eq i64 %indvars.iv.next46.i, 2800183 br i1 %exitcond48.not.i, label %init_array.exit, label %vector.ph184 185 init_array.exit: ; preds = %for.inc20.i186 call void @free(ptr noundef nonnull %0)187 ret i32 0188 }189 190 attributes #0 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="a64fx" "target-features"="+aes,+complxnum,+crc,+fp-armv8,+fullfp16,+lse,+neon,+outline-atomics,+perfmon,+ras,+rdm,+sha2,+sve,+v8.1a,+v8.2a,+v8a,-fmv" }191 attributes #1 = { nounwind uwtable vscale_range(1,1) "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="a64fx" "target-features"="+aes,+complxnum,+crc,+fp-armv8,+fullfp16,+lse,+neon,+outline-atomics,+perfmon,+ras,+rdm,+sha2,+sve,+v8.1a,+v8.2a,+v8a,-fmv" }192 193...194---195name: main196tracksRegLiveness: true197stack:198 - { id: 0, name: ret.i.i55, size: 8, alignment: 8, local-offset: -8 }199 - { id: 1, name: ret.i.i, size: 8, alignment: 8, local-offset: -16 }200machineFunctionInfo: {}201body: |202 bb.0.entry:203 %18:gpr64all = COPY $xzr204 %17:gpr64all = COPY %18205 %19:gpr64common = LDRXui %stack.1.ret.i.i, 0 :: (dereferenceable load (s64) from %ir.ret.i.i)206 %0:gpr64common = COPY %19207 %21:zpr = DUP_ZI_D 0, 0, implicit $vg208 %23:gpr32 = MOVi32imm 2800209 %24:ppr_3b = PTRUE_D 31, implicit $vg210 %28:ppr_3b = PTRUE_S 31, implicit $vg211 %29:gpr32common = MOVi32imm 613566757212 %30:zpr = DUP_ZR_S %29213 %36:zpr = DUP_ZI_S 7, 0, implicit $vg214 %43:gpr32common = MOVi32imm -991146299215 %44:zpr = DUP_ZR_S %43216 %46:gpr32common = MOVi32imm 330382099217 %47:zpr = DUP_ZR_S %46218 %49:gpr32common = MOVi32imm -1227133513219 %50:zpr = DUP_ZR_S %49220 %52:gpr32common = MOVi32imm 613566756221 %53:zpr = DUP_ZR_S %52222 %56:gpr32common = MOVi32imm -1171354717223 %57:zpr = DUP_ZR_S %56224 %59:gpr32common = MOVi32imm 390451572225 %60:zpr = DUP_ZR_S %59226 %63:gpr32common = MOVi32imm 999227 %64:zpr = DUP_ZR_S %63228 %79:gpr64common = MOVi64imm 4229 %104:gpr64common = MOVi64imm 8230 %129:gpr64common = MOVi64imm 12231 %154:gpr64common = MOVi64imm 16232 %179:gpr64common = MOVi64imm 20233 %204:gpr64common = MOVi64imm 24234 235 bb.1.vector.ph:236 %1:gpr64sp = PHI %17, %bb.0, %14, %bb.3237 %2:gpr64sp = PHI %17, %bb.0, %13, %bb.3238 %4:zpr = DUP_ZR_D %2239 %22:zpr = COPY %21240 %20:gpr64all = SUBREG_TO_REG 0, %23, %subreg.sub_32241 242 bb.2.vector.body:243 successors: %bb.3(0x04000000), %bb.2(0x7c000000)244 245 %5:gpr64common = PHI %1, %bb.1, %12, %bb.2246 %6:gpr64sp = PHI %20, %bb.1, %11, %bb.2247 %7:zpr = PHI %21, %bb.1, %9, %bb.2248 %8:zpr = PHI %22, %bb.1, %10, %bb.2249 %25:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %7, %4250 %26:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %8, %4251 %27:zpr = UZP1_ZZZ_S killed %25, killed %26252 %31:zpr = UMULH_ZPZZ_S_UNDEF %28, %27, %30253 %32:zpr = SUB_ZZZ_S %27, %31254 %33:zpr = LSR_ZZI_S killed %32, 1255 %34:zpr = ADD_ZZZ_S killed %33, %31256 %35:zpr = LSR_ZZI_S killed %34, 2257 %37:zpr = MLS_ZPZZZ_S_UNDEF %28, %27, killed %35, %36258 %38:zpr = nuw nsw ADD_ZI_S %37, 1, 0259 %39:gpr64common = ADDXrs %19, %5, 2260 %40:zpr = nuw nsw ADD_ZZZ_D %7, %4261 %41:zpr = nuw nsw ADD_ZZZ_D %8, %4262 %42:zpr = UZP1_ZZZ_S killed %40, killed %41263 %45:zpr = MUL_ZPZZ_S_UNDEF %28, %42, %44264 %48:ppr = CMPHS_PPzZZ_S %28, %47, killed %45, implicit-def dead $nzcv265 %51:zpr = MUL_ZPZZ_S_UNDEF %28, %42, %50266 %54:ppr = CMPHS_PPzZZ_S %28, %53, killed %51, implicit-def dead $nzcv267 %55:ppr = SEL_PPPP %48, %48, killed %54268 %58:zpr = MUL_ZPZZ_S_UNDEF %28, %42, %57269 %61:ppr = CMPHS_PPzZZ_S %28, %60, killed %58, implicit-def dead $nzcv270 %62:ppr = SEL_PPPP %61, %61, killed %55271 %65:zpr = SEL_ZPZZ_S killed %62, %64, killed %38272 ST1W killed %65, %28, %0, %5 :: (store (<vscale x 1 x s128>) into %ir.scevgep16, align 4)273 %67:zpr = ADD_ZI_D %8, 4, 0274 %68:zpr = ADD_ZI_D %7, 4, 0275 %69:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %68, %4276 %70:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %67, %4277 %71:zpr = UZP1_ZZZ_S killed %69, killed %70278 %72:zpr = UMULH_ZPZZ_S_UNDEF %28, %71, %30279 %73:zpr = SUB_ZZZ_S %71, %72280 %74:zpr = LSR_ZZI_S killed %73, 1281 %75:zpr = ADD_ZZZ_S killed %74, %72282 %76:zpr = LSR_ZZI_S killed %75, 2283 %77:zpr = MLS_ZPZZZ_S_UNDEF %28, %71, killed %76, %36284 %78:zpr = nuw nsw ADD_ZI_S %77, 1, 0285 %80:zpr = nuw nsw ADD_ZZZ_D %68, %4286 %81:zpr = nuw nsw ADD_ZZZ_D %67, %4287 %82:zpr = UZP1_ZZZ_S killed %80, killed %81288 %83:zpr = MUL_ZPZZ_S_UNDEF %28, %82, %44289 %84:ppr = CMPHS_PPzZZ_S %28, %47, killed %83, implicit-def dead $nzcv290 %85:zpr = MUL_ZPZZ_S_UNDEF %28, %82, %50291 %86:ppr = CMPHS_PPzZZ_S %28, %53, killed %85, implicit-def dead $nzcv292 %87:ppr = SEL_PPPP %84, %84, killed %86293 %88:zpr = MUL_ZPZZ_S_UNDEF %28, %82, %57294 %89:ppr = CMPHS_PPzZZ_S %28, %60, killed %88, implicit-def dead $nzcv295 %90:ppr = SEL_PPPP %89, %89, killed %87296 %91:zpr = SEL_ZPZZ_S killed %90, %64, killed %78297 ST1W killed %91, %28, %39, %79 :: (store (<vscale x 1 x s128>) into %ir.scevgep15, align 4)298 %92:zpr = ADD_ZI_D %8, 8, 0299 %93:zpr = ADD_ZI_D %7, 8, 0300 %94:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %93, %4301 %95:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %92, %4302 %96:zpr = UZP1_ZZZ_S killed %94, killed %95303 %97:zpr = UMULH_ZPZZ_S_UNDEF %28, %96, %30304 %98:zpr = SUB_ZZZ_S %96, %97305 %99:zpr = LSR_ZZI_S killed %98, 1306 %100:zpr = ADD_ZZZ_S killed %99, %97307 %101:zpr = LSR_ZZI_S killed %100, 2308 %102:zpr = MLS_ZPZZZ_S_UNDEF %28, %96, killed %101, %36309 %103:zpr = nuw nsw ADD_ZI_S %102, 1, 0310 %105:zpr = nuw nsw ADD_ZZZ_D %93, %4311 %106:zpr = nuw nsw ADD_ZZZ_D %92, %4312 %107:zpr = UZP1_ZZZ_S killed %105, killed %106313 %108:zpr = MUL_ZPZZ_S_UNDEF %28, %107, %44314 %109:ppr = CMPHS_PPzZZ_S %28, %47, killed %108, implicit-def dead $nzcv315 %110:zpr = MUL_ZPZZ_S_UNDEF %28, %107, %50316 %111:ppr = CMPHS_PPzZZ_S %28, %53, killed %110, implicit-def dead $nzcv317 %112:ppr = SEL_PPPP %109, %109, killed %111318 %113:zpr = MUL_ZPZZ_S_UNDEF %28, %107, %57319 %114:ppr = CMPHS_PPzZZ_S %28, %60, killed %113, implicit-def dead $nzcv320 %115:ppr = SEL_PPPP %114, %114, killed %112321 %116:zpr = SEL_ZPZZ_S killed %115, %64, killed %103322 ST1W killed %116, %28, %39, %104 :: (store (<vscale x 1 x s128>) into %ir.scevgep13, align 4)323 %117:zpr = ADD_ZI_D %8, 12, 0324 %118:zpr = ADD_ZI_D %7, 12, 0325 %119:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %118, %4326 %120:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %117, %4327 %121:zpr = UZP1_ZZZ_S killed %119, killed %120328 %122:zpr = UMULH_ZPZZ_S_UNDEF %28, %121, %30329 %123:zpr = SUB_ZZZ_S %121, %122330 %124:zpr = LSR_ZZI_S killed %123, 1331 %125:zpr = ADD_ZZZ_S killed %124, %122332 %126:zpr = LSR_ZZI_S killed %125, 2333 %127:zpr = MLS_ZPZZZ_S_UNDEF %28, %121, killed %126, %36334 %128:zpr = nuw nsw ADD_ZI_S %127, 1, 0335 %130:zpr = nuw nsw ADD_ZZZ_D %118, %4336 %131:zpr = nuw nsw ADD_ZZZ_D %117, %4337 %132:zpr = UZP1_ZZZ_S killed %130, killed %131338 %133:zpr = MUL_ZPZZ_S_UNDEF %28, %132, %44339 %134:ppr = CMPHS_PPzZZ_S %28, %47, killed %133, implicit-def dead $nzcv340 %135:zpr = MUL_ZPZZ_S_UNDEF %28, %132, %50341 %136:ppr = CMPHS_PPzZZ_S %28, %53, killed %135, implicit-def dead $nzcv342 %137:ppr = SEL_PPPP %134, %134, killed %136343 %138:zpr = MUL_ZPZZ_S_UNDEF %28, %132, %57344 %139:ppr = CMPHS_PPzZZ_S %28, %60, killed %138, implicit-def dead $nzcv345 %140:ppr = SEL_PPPP %139, %139, killed %137346 %141:zpr = SEL_ZPZZ_S killed %140, %64, killed %128347 ST1W killed %141, %28, %39, %129 :: (store (<vscale x 1 x s128>) into %ir.scevgep11, align 4)348 %142:zpr = ADD_ZI_D %8, 16, 0349 %143:zpr = ADD_ZI_D %7, 16, 0350 %144:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %143, %4351 %145:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %142, %4352 %146:zpr = UZP1_ZZZ_S killed %144, killed %145353 %147:zpr = UMULH_ZPZZ_S_UNDEF %28, %146, %30354 %148:zpr = SUB_ZZZ_S %146, %147355 %149:zpr = LSR_ZZI_S killed %148, 1356 %150:zpr = ADD_ZZZ_S killed %149, %147357 %151:zpr = LSR_ZZI_S killed %150, 2358 %152:zpr = MLS_ZPZZZ_S_UNDEF %28, %146, killed %151, %36359 %153:zpr = nuw nsw ADD_ZI_S %152, 1, 0360 %155:zpr = nuw nsw ADD_ZZZ_D %143, %4361 %156:zpr = nuw nsw ADD_ZZZ_D %142, %4362 %157:zpr = UZP1_ZZZ_S killed %155, killed %156363 %158:zpr = MUL_ZPZZ_S_UNDEF %28, %157, %44364 %159:ppr = CMPHS_PPzZZ_S %28, %47, killed %158, implicit-def dead $nzcv365 %160:zpr = MUL_ZPZZ_S_UNDEF %28, %157, %50366 %161:ppr = CMPHS_PPzZZ_S %28, %53, killed %160, implicit-def dead $nzcv367 %162:ppr = SEL_PPPP %159, %159, killed %161368 %163:zpr = MUL_ZPZZ_S_UNDEF %28, %157, %57369 %164:ppr = CMPHS_PPzZZ_S %28, %60, killed %163, implicit-def dead $nzcv370 %165:ppr = SEL_PPPP %164, %164, killed %162371 %166:zpr = SEL_ZPZZ_S killed %165, %64, killed %153372 ST1W killed %166, %28, %39, %154 :: (store (<vscale x 1 x s128>) into %ir.scevgep9, align 4)373 %167:zpr = ADD_ZI_D %8, 20, 0374 %168:zpr = ADD_ZI_D %7, 20, 0375 %169:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %168, %4376 %170:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %167, %4377 %171:zpr = UZP1_ZZZ_S killed %169, killed %170378 %172:zpr = UMULH_ZPZZ_S_UNDEF %28, %171, %30379 %173:zpr = SUB_ZZZ_S %171, %172380 %174:zpr = LSR_ZZI_S killed %173, 1381 %175:zpr = ADD_ZZZ_S killed %174, %172382 %176:zpr = LSR_ZZI_S killed %175, 2383 %177:zpr = MLS_ZPZZZ_S_UNDEF %28, %171, killed %176, %36384 %178:zpr = nuw nsw ADD_ZI_S %177, 1, 0385 %180:zpr = nuw nsw ADD_ZZZ_D %168, %4386 %181:zpr = nuw nsw ADD_ZZZ_D %167, %4387 %182:zpr = UZP1_ZZZ_S killed %180, killed %181388 %183:zpr = MUL_ZPZZ_S_UNDEF %28, %182, %44389 %184:ppr = CMPHS_PPzZZ_S %28, %47, killed %183, implicit-def dead $nzcv390 %185:zpr = MUL_ZPZZ_S_UNDEF %28, %182, %50391 %186:ppr = CMPHS_PPzZZ_S %28, %53, killed %185, implicit-def dead $nzcv392 %187:ppr = SEL_PPPP %184, %184, killed %186393 %188:zpr = MUL_ZPZZ_S_UNDEF %28, %182, %57394 %189:ppr = CMPHS_PPzZZ_S %28, %60, killed %188, implicit-def dead $nzcv395 %190:ppr = SEL_PPPP %189, %189, killed %187396 %191:zpr = SEL_ZPZZ_S killed %190, %64, killed %178397 ST1W killed %191, %28, %39, %179 :: (store (<vscale x 1 x s128>) into %ir.scevgep7, align 4)398 %192:zpr = ADD_ZI_D %8, 24, 0399 %193:zpr = ADD_ZI_D %7, 24, 0400 %194:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %193, %4401 %195:zpr = nuw nsw MUL_ZPZZ_D_UNDEF %24, %192, %4402 %196:zpr = UZP1_ZZZ_S killed %194, killed %195403 %197:zpr = UMULH_ZPZZ_S_UNDEF %28, %196, %30404 %198:zpr = SUB_ZZZ_S %196, %197405 %199:zpr = LSR_ZZI_S killed %198, 1406 %200:zpr = ADD_ZZZ_S killed %199, %197407 %201:zpr = LSR_ZZI_S killed %200, 2408 %202:zpr = MLS_ZPZZZ_S_UNDEF %28, %196, killed %201, %36409 %203:zpr = nuw nsw ADD_ZI_S %202, 1, 0410 %205:zpr = nuw nsw ADD_ZZZ_D %193, %4411 %206:zpr = nuw nsw ADD_ZZZ_D %192, %4412 %207:zpr = UZP1_ZZZ_S killed %205, killed %206413 %208:zpr = MUL_ZPZZ_S_UNDEF %28, %207, %44414 %209:ppr = CMPHS_PPzZZ_S %28, %47, killed %208, implicit-def dead $nzcv415 %210:zpr = MUL_ZPZZ_S_UNDEF %28, %207, %50416 %211:ppr = CMPHS_PPzZZ_S %28, %53, killed %210, implicit-def dead $nzcv417 %212:ppr = SEL_PPPP %209, %209, killed %211418 %213:zpr = MUL_ZPZZ_S_UNDEF %28, %207, %57419 %214:ppr = CMPHS_PPzZZ_S %28, %60, killed %213, implicit-def dead $nzcv420 %215:ppr = SEL_PPPP %214, %214, killed %212421 %216:zpr = SEL_ZPZZ_S killed %215, %64, killed %203422 ST1W killed %216, %28, %39, %204 :: (store (<vscale x 1 x s128>) into %ir.scevgep5, align 4)423 %9:zpr = ADD_ZI_D %7, 28, 0424 %10:zpr = ADD_ZI_D %8, 28, 0425 %217:gpr64 = nsw SUBSXri %6, 28, 0, implicit-def $nzcv426 %11:gpr64all = COPY %217427 %218:gpr64sp = nuw nsw ADDXri %5, 28, 0428 %12:gpr64all = COPY %218429 Bcc 1, %bb.2, implicit $nzcv430 B %bb.3431 432 bb.3.for.inc20.i:433 successors: %bb.4(0x04000000), %bb.1(0x7c000000)434 435 %219:gpr64sp = nuw nsw ADDXri %2, 1, 0436 %13:gpr64all = COPY %219437 %220:gpr64sp = nuw nsw ADDXri %1, 2800, 0438 %14:gpr64all = COPY %220439 dead $xzr = SUBSXri %219, 2800, 0, implicit-def $nzcv440 Bcc 1, %bb.1, implicit $nzcv441 B %bb.4442 443 bb.4.init_array.exit:444 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp445 $x0 = COPY %0446 BL @free, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp447 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp448 %222:gpr32all = COPY $wzr449 $w0 = COPY %222450 RET_ReallyLR implicit $w0451 452...453