82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple aarch64 -mcpu=cortex-a57 -mattr=+slow-paired-128 < %s | FileCheck %s --check-prefixes=DEFAULT3; RUN: llc -mtriple aarch64 -mcpu=cortex-a57 -mattr=+slow-paired-128 -mattr=+ascend-store-address < %s | FileCheck %s --check-prefixes=ASCEND4 5target triple = "aarch64-unknown-linux-gnu"6 7define dso_local void @memset_unroll2(ptr nocapture %array, i64 %size) {8; DEFAULT-LABEL: memset_unroll2:9; DEFAULT: // %bb.0: // %entry10; DEFAULT-NEXT: fmov v0.2d, #2.0000000011; DEFAULT-NEXT: add x8, x0, #6412; DEFAULT-NEXT: .p2align 4, , 813; DEFAULT-NEXT: .LBB0_1: // %vector.body14; DEFAULT-NEXT: // =>This Inner Loop Header: Depth=115; DEFAULT-NEXT: stur q0, [x8, #-64]16; DEFAULT-NEXT: subs x1, x1, #417; DEFAULT-NEXT: stur q0, [x8, #-48]18; DEFAULT-NEXT: str q0, [x8]19; DEFAULT-NEXT: str q0, [x8, #16]20; DEFAULT-NEXT: str q0, [x8, #32]21; DEFAULT-NEXT: str q0, [x8, #48]22; DEFAULT-NEXT: stur q0, [x8, #-32]23; DEFAULT-NEXT: stur q0, [x8, #-16]24; DEFAULT-NEXT: add x8, x8, #12825; DEFAULT-NEXT: b.ne .LBB0_126; DEFAULT-NEXT: // %bb.2: // %cleanup27; DEFAULT-NEXT: ret28;29; ASCEND-LABEL: memset_unroll2:30; ASCEND: // %bb.0: // %entry31; ASCEND-NEXT: fmov v0.2d, #2.0000000032; ASCEND-NEXT: add x8, x0, #6433; ASCEND-NEXT: .p2align 4, , 834; ASCEND-NEXT: .LBB0_1: // %vector.body35; ASCEND-NEXT: // =>This Inner Loop Header: Depth=136; ASCEND-NEXT: stur q0, [x8, #-64]37; ASCEND-NEXT: subs x1, x1, #438; ASCEND-NEXT: stur q0, [x8, #-48]39; ASCEND-NEXT: stur q0, [x8, #-32]40; ASCEND-NEXT: stur q0, [x8, #-16]41; ASCEND-NEXT: str q0, [x8]42; ASCEND-NEXT: str q0, [x8, #16]43; ASCEND-NEXT: str q0, [x8, #32]44; ASCEND-NEXT: str q0, [x8, #48]45; ASCEND-NEXT: add x8, x8, #12846; ASCEND-NEXT: b.ne .LBB0_147; ASCEND-NEXT: // %bb.2: // %cleanup48; ASCEND-NEXT: ret49entry:50 br label %vector.body51 52vector.body: ; preds = %vector.body, %entry53 %index = phi i64 [ 0, %entry ], [ %index16, %vector.body ]54 %niter = phi i64 [ %size, %entry ], [ %niter.nsub.3, %vector.body ]55 %array0 = getelementptr inbounds double, ptr %array, i64 %index56 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array0, align 857 %array2 = getelementptr inbounds double, ptr %array0, i64 258 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array2, align 859 %index4 = or disjoint i64 %index, 460 %array4 = getelementptr inbounds double, ptr %array, i64 %index461 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array4, align 862 %array6 = getelementptr inbounds double, ptr %array4, i64 263 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array6, align 864 %index8 = or disjoint i64 %index, 865 %array8 = getelementptr inbounds double, ptr %array, i64 %index866 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array8, align 867 %array10 = getelementptr inbounds double, ptr %array8, i64 268 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array10, align 869 %index12 = or disjoint i64 %index, 1270 %array12 = getelementptr inbounds double, ptr %array, i64 %index1271 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array12, align 872 %array14 = getelementptr inbounds double, ptr %array12, i64 273 store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %array14, align 874 %index16 = add i64 %index, 1675 %niter.nsub.3 = add i64 %niter, -476 %niter.ncmp.3 = icmp eq i64 %niter.nsub.3, 077 br i1 %niter.ncmp.3, label %cleanup, label %vector.body78 79cleanup: ; preds = %vector.body80 ret void81}82