1; RUN: llc -ppc-asm-full-reg-names -verify-machineinstrs < %s \ 2; RUN: -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s 3 4; void test(unsigned *a, unsigned *b, unsigned *c) 5; { 6; for (unsigned long i = 0; i < 1024; i++) 7; c[i] = a[i] + b[i]; 8; } 9; 10; compile with -fno-unroll-loops 11 12define void @lsr-insts-cost(i32* %0, i32* %1, i32* %2) { 13; CHECK-LABEL: lsr-insts-cost 14; CHECK: .LBB0_4: # =>This Inner Loop Header: Depth=1 15; CHECK-NEXT: lxvd2x vs34, 0, r3 16; CHECK-NEXT: lxvd2x vs35, 0, r4 17; CHECK-NEXT: addi r4, r4, 16 18; CHECK-NEXT: addi r3, r3, 16 19; CHECK-NEXT: vadduwm v2, v3, v2 20; CHECK-NEXT: stxvd2x vs34, 0, r5 21; CHECK-NEXT: addi r5, r5, 16 22; CHECK-NEXT: bdnz .LBB0_4 23 %4 = getelementptr i32, i32* %2, i64 1024 24 %5 = getelementptr i32, i32* %0, i64 1024 25 %6 = getelementptr i32, i32* %1, i64 1024 26 %7 = icmp ugt i32* %5, %2 27 %8 = icmp ugt i32* %4, %0 28 %9 = and i1 %7, %8 29 %10 = icmp ugt i32* %6, %2 30 %11 = icmp ugt i32* %4, %1 31 %12 = and i1 %10, %11 32 %13 = or i1 %9, %12 33 br i1 %13, label %28, label %14 34 3514: ; preds = %3, %14 36 %15 = phi i64 [ %25, %14 ], [ 0, %3 ] 37 %16 = getelementptr inbounds i32, i32* %0, i64 %15 38 %17 = bitcast i32* %16 to <4 x i32>* 39 %18 = load <4 x i32>, <4 x i32>* %17, align 4 40 %19 = getelementptr inbounds i32, i32* %1, i64 %15 41 %20 = bitcast i32* %19 to <4 x i32>* 42 %21 = load <4 x i32>, <4 x i32>* %20, align 4 43 %22 = add <4 x i32> %21, %18 44 %23 = getelementptr inbounds i32, i32* %2, i64 %15 45 %24 = bitcast i32* %23 to <4 x i32>* 46 store <4 x i32> %22, <4 x i32>* %24, align 4 47 %25 = add i64 %15, 4 48 %26 = icmp eq i64 %25, 1024 49 br i1 %26, label %27, label %14 50 5127: ; preds = %14, %28 52 ret void 53 5428: ; preds = %3, %28 55 %29 = phi i64 [ %36, %28 ], [ 0, %3 ] 56 %30 = getelementptr inbounds i32, i32* %0, i64 %29 57 %31 = load i32, i32* %30, align 4 58 %32 = getelementptr inbounds i32, i32* %1, i64 %29 59 %33 = load i32, i32* %32, align 4 60 %34 = add i32 %33, %31 61 %35 = getelementptr inbounds i32, i32* %2, i64 %29 62 store i32 %34, i32* %35, align 4 63 %36 = add nuw nsw i64 %29, 1 64 %37 = icmp eq i64 %36, 1024 65 br i1 %37, label %27, label %28 66} 67