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