1; RUN: opt < %s -O1 -basicaa -slp-vectorizer -dce -S -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7-avx | FileCheck %s 2 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 4target triple = "x86_64-unknown-linux-gnu" 5 6;CHECK: load <2 x double>, <2 x double>* 7;CHECK: fadd <2 x double> 8;CHECK: store <2 x double> 9 10; Function Attrs: nounwind uwtable 11define void @foo(double* %x) #0 { 12 %1 = alloca double*, align 8 13 store double* %x, double** %1, align 8 14 %2 = load double*, double** %1, align 8 15 %3 = getelementptr inbounds double, double* %2, i64 0 16 %4 = load double, double* %3, align 8 17 %5 = load double*, double** %1, align 8 18 %6 = getelementptr inbounds double, double* %5, i64 0 19 %7 = load double, double* %6, align 8 20 %8 = fadd double %4, %7 21 %9 = load double*, double** %1, align 8 22 %10 = getelementptr inbounds double, double* %9, i64 0 23 %11 = load double, double* %10, align 8 24 %12 = fadd double %8, %11 25 %13 = load double*, double** %1, align 8 26 %14 = getelementptr inbounds double, double* %13, i64 0 27 store double %12, double* %14, align 8 28 %15 = load double*, double** %1, align 8 29 %16 = getelementptr inbounds double, double* %15, i64 1 30 %17 = load double, double* %16, align 8 31 %18 = load double*, double** %1, align 8 32 %19 = getelementptr inbounds double, double* %18, i64 1 33 %20 = load double, double* %19, align 8 34 %21 = fadd double %17, %20 35 %22 = load double*, double** %1, align 8 36 %23 = getelementptr inbounds double, double* %22, i64 1 37 %24 = load double, double* %23, align 8 38 %25 = fadd double %21, %24 39 %26 = load double*, double** %1, align 8 40 %27 = getelementptr inbounds double, double* %26, i64 1 41 store double %25, double* %27, align 8 42 %28 = load double*, double** %1, align 8 43 %29 = getelementptr inbounds double, double* %28, i64 2 44 %30 = load double, double* %29, align 8 45 %31 = load double*, double** %1, align 8 46 %32 = getelementptr inbounds double, double* %31, i64 2 47 %33 = load double, double* %32, align 8 48 %34 = fadd double %30, %33 49 %35 = load double*, double** %1, align 8 50 %36 = getelementptr inbounds double, double* %35, i64 2 51 %37 = load double, double* %36, align 8 52 %38 = fadd double %34, %37 53 %39 = load double*, double** %1, align 8 54 %40 = getelementptr inbounds double, double* %39, i64 2 55 store double %38, double* %40, align 8 56 %41 = load double*, double** %1, align 8 57 %42 = getelementptr inbounds double, double* %41, i64 3 58 %43 = load double, double* %42, align 8 59 %44 = load double*, double** %1, align 8 60 %45 = getelementptr inbounds double, double* %44, i64 3 61 %46 = load double, double* %45, align 8 62 %47 = fadd double %43, %46 63 %48 = load double*, double** %1, align 8 64 %49 = getelementptr inbounds double, double* %48, i64 3 65 %50 = load double, double* %49, align 8 66 %51 = fadd double %47, %50 67 %52 = load double*, double** %1, align 8 68 %53 = getelementptr inbounds double, double* %52, i64 3 69 store double %51, double* %53, align 8 70 ret void 71} 72 73attributes #0 = { nounwind } 74