llvm.org GIT mirror llvm / 9e24ab7 test / CodeGen / PowerPC / vsx-infl-copy1.ll
9e24ab7

Tree @9e24ab7 (Download .tar.gz)

vsx-infl-copy1.ll @9e24ab7

ba51ae6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
 
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
198d8ba
ba51ae6
7c9c6ed
ba51ae6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
; RUN: llc -mcpu=pwr7 < %s | FileCheck %s
target datalayout = "E-m:e-i64:64-n32:64"
target triple = "powerpc64-unknown-linux-gnu"

@ub = external global [1024 x i32], align 4
@uc = external global [1024 x i32], align 4

; Function Attrs: noinline nounwind
define void @_Z8example9Pj() #0 {
entry:
  br label %vector.body

; CHECK-LABEL: @_Z8example9Pj
; CHECK: xxlor

vector.body:                                      ; preds = %vector.body, %entry
  %index = phi i64 [ 0, %entry ], [ %index.next, %vector.body ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %entry ], [ %43, %vector.body ]
  %vec.phi20 = phi <4 x i32> [ zeroinitializer, %entry ], [ %44, %vector.body ]
  %vec.phi21 = phi <4 x i32> [ zeroinitializer, %entry ], [ %45, %vector.body ]
  %vec.phi23 = phi <4 x i32> [ zeroinitializer, %entry ], [ %46, %vector.body ]
  %vec.phi24 = phi <4 x i32> [ zeroinitializer, %entry ], [ %47, %vector.body ]
  %vec.phi25 = phi <4 x i32> [ zeroinitializer, %entry ], [ %48, %vector.body ]
  %vec.phi26 = phi <4 x i32> [ zeroinitializer, %entry ], [ %49, %vector.body ]
  %vec.phi27 = phi <4 x i32> [ zeroinitializer, %entry ], [ %50, %vector.body ]
  %vec.phi28 = phi <4 x i32> [ zeroinitializer, %entry ], [ %51, %vector.body ]
  %vec.phi29 = phi <4 x i32> [ zeroinitializer, %entry ], [ %52, %vector.body ]
  %vec.phi30 = phi <4 x i32> [ zeroinitializer, %entry ], [ %53, %vector.body ]
  %wide.load32 = load <4 x i32>, <4 x i32>* null, align 4
  %.sum82 = add i64 %index, 24
  %0 = getelementptr [1024 x i32], [1024 x i32]* @ub, i64 0, i64 %.sum82
  %1 = bitcast i32* %0 to <4 x i32>*
  %wide.load36 = load <4 x i32>, <4 x i32>* %1, align 4
  %wide.load37 = load <4 x i32>, <4 x i32>* undef, align 4
  %.sum84 = add i64 %index, 32
  %2 = getelementptr [1024 x i32], [1024 x i32]* @ub, i64 0, i64 %.sum84
  %3 = bitcast i32* %2 to <4 x i32>*
  %wide.load38 = load <4 x i32>, <4 x i32>* %3, align 4
  %.sum85 = add i64 %index, 36
  %4 = getelementptr [1024 x i32], [1024 x i32]* @ub, i64 0, i64 %.sum85
  %5 = bitcast i32* %4 to <4 x i32>*
  %wide.load39 = load <4 x i32>, <4 x i32>* %5, align 4
  %6 = getelementptr [1024 x i32], [1024 x i32]* @ub, i64 0, i64 undef
  %7 = bitcast i32* %6 to <4 x i32>*
  %wide.load40 = load <4 x i32>, <4 x i32>* %7, align 4
  %.sum87 = add i64 %index, 44
  %8 = getelementptr [1024 x i32], [1024 x i32]* @ub, i64 0, i64 %.sum87
  %9 = bitcast i32* %8 to <4 x i32>*
  %wide.load41 = load <4 x i32>, <4 x i32>* %9, align 4
  %10 = getelementptr inbounds [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %index
  %11 = bitcast i32* %10 to <4 x i32>*
  %wide.load42 = load <4 x i32>, <4 x i32>* %11, align 4
  %.sum8889 = or i64 %index, 4
  %12 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum8889
  %13 = bitcast i32* %12 to <4 x i32>*
  %wide.load43 = load <4 x i32>, <4 x i32>* %13, align 4
  %.sum9091 = or i64 %index, 8
  %14 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum9091
  %15 = bitcast i32* %14 to <4 x i32>*
  %wide.load44 = load <4 x i32>, <4 x i32>* %15, align 4
  %.sum94 = add i64 %index, 16
  %16 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum94
  %17 = bitcast i32* %16 to <4 x i32>*
  %wide.load46 = load <4 x i32>, <4 x i32>* %17, align 4
  %.sum95 = add i64 %index, 20
  %18 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum95
  %19 = bitcast i32* %18 to <4 x i32>*
  %wide.load47 = load <4 x i32>, <4 x i32>* %19, align 4
  %20 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 undef
  %21 = bitcast i32* %20 to <4 x i32>*
  %wide.load48 = load <4 x i32>, <4 x i32>* %21, align 4
  %.sum97 = add i64 %index, 28
  %22 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum97
  %23 = bitcast i32* %22 to <4 x i32>*
  %wide.load49 = load <4 x i32>, <4 x i32>* %23, align 4
  %.sum98 = add i64 %index, 32
  %24 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum98
  %25 = bitcast i32* %24 to <4 x i32>*
  %wide.load50 = load <4 x i32>, <4 x i32>* %25, align 4
  %.sum99 = add i64 %index, 36
  %26 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum99
  %27 = bitcast i32* %26 to <4 x i32>*
  %wide.load51 = load <4 x i32>, <4 x i32>* %27, align 4
  %.sum100 = add i64 %index, 40
  %28 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum100
  %29 = bitcast i32* %28 to <4 x i32>*
  %wide.load52 = load <4 x i32>, <4 x i32>* %29, align 4
  %.sum101 = add i64 %index, 44
  %30 = getelementptr [1024 x i32], [1024 x i32]* @uc, i64 0, i64 %.sum101
  %31 = bitcast i32* %30 to <4 x i32>*
  %wide.load53 = load <4 x i32>, <4 x i32>* %31, align 4
  %32 = add <4 x i32> zeroinitializer, %vec.phi
  %33 = add <4 x i32> zeroinitializer, %vec.phi20
  %34 = add <4 x i32> %wide.load32, %vec.phi21
  %35 = add <4 x i32> zeroinitializer, %vec.phi23
  %36 = add <4 x i32> zeroinitializer, %vec.phi24
  %37 = add <4 x i32> %wide.load36, %vec.phi25
  %38 = add <4 x i32> %wide.load37, %vec.phi26
  %39 = add <4 x i32> %wide.load38, %vec.phi27
  %40 = add <4 x i32> %wide.load39, %vec.phi28
  %41 = add <4 x i32> %wide.load40, %vec.phi29
  %42 = add <4 x i32> %wide.load41, %vec.phi30
  %43 = sub <4 x i32> %32, %wide.load42
  %44 = sub <4 x i32> %33, %wide.load43
  %45 = sub <4 x i32> %34, %wide.load44
  %46 = sub <4 x i32> %35, %wide.load46
  %47 = sub <4 x i32> %36, %wide.load47
  %48 = sub <4 x i32> %37, %wide.load48
  %49 = sub <4 x i32> %38, %wide.load49
  %50 = sub <4 x i32> %39, %wide.load50
  %51 = sub <4 x i32> %40, %wide.load51
  %52 = sub <4 x i32> %41, %wide.load52
  %53 = sub <4 x i32> %42, %wide.load53
  %index.next = add i64 %index, 48
  br i1 false, label %middle.block, label %vector.body

middle.block:                                     ; preds = %vector.body
  %.lcssa112 = phi <4 x i32> [ %53, %vector.body ]
  %.lcssa111 = phi <4 x i32> [ %52, %vector.body ]
  %.lcssa110 = phi <4 x i32> [ %51, %vector.body ]
  %.lcssa109 = phi <4 x i32> [ %50, %vector.body ]
  %.lcssa108 = phi <4 x i32> [ %49, %vector.body ]
  %.lcssa107 = phi <4 x i32> [ %48, %vector.body ]
  %.lcssa106 = phi <4 x i32> [ %47, %vector.body ]
  %.lcssa105 = phi <4 x i32> [ %46, %vector.body ]
  %.lcssa103 = phi <4 x i32> [ %45, %vector.body ]
  %.lcssa102 = phi <4 x i32> [ %44, %vector.body ]
  %.lcssa = phi <4 x i32> [ %43, %vector.body ]
  ret void
}

attributes #0 = { noinline nounwind }