brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 937ff6f Raw
42 lines · plain
1; RUN: opt -passes=loop-vectorize -S -mattr=avx512f  < %s | FileCheck %s2 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6; This test checks that "gather" operation is choosen since it's cost is better7; than interleaving pattern.8;9;unsigned long A[SIZE];10;unsigned long B[SIZE];11;12;void foo() {13;  for (int i=0; i<N; i+=8) {14;    B[i] = A[i] + 5;15;  }16;}17 18@A = global [10240 x i64] zeroinitializer, align 1619@B = global [10240 x i64] zeroinitializer, align 1620 21 22; CHECK-LABEL: strided_load_i6423; CHECK: masked.gather24define void @strided_load_i64() {25  br label %126 27; <label>:1:                                      ; preds = %0, %128  %indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %1 ]29  %2 = getelementptr inbounds [10240 x i64], ptr @A, i64 0, i64 %indvars.iv30  %3 = load i64, ptr %2, align 1631  %4 = add i64 %3, 532  %5 = getelementptr inbounds [10240 x i64], ptr @B, i64 0, i64 %indvars.iv33  store i64 %4, ptr %5, align 1634  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 835  %6 = icmp slt i64 %indvars.iv.next, 102436  br i1 %6, label %1, label %737 38; <label>:7:                                      ; preds = %139  ret void40}41 42