80 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=slp-vectorizer -mattr=+avx512f -mtriple=x86_64 -S < %s | FileCheck %s3 4define void @test(ptr noalias %0, ptr %p) {5; CHECK-LABEL: @test(6; CHECK-NEXT: [[TMP5:%.*]] = getelementptr inbounds float, ptr [[TMP0:%.*]], i64 27; CHECK-NEXT: [[TMP3:%.*]] = call <16 x float> @llvm.masked.load.v16f32.p0(ptr align 16 [[P:%.*]], <16 x i1> <i1 true, i1 false, i1 true, i1 false, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 true>, <16 x float> poison)8; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <16 x float> [[TMP3]], <16 x float> poison, <8 x i32> <i32 15, i32 4, i32 5, i32 0, i32 2, i32 6, i32 7, i32 8>9; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <16 x float> [[TMP3]], <16 x float> poison, <16 x i32> <i32 15, i32 4, i32 5, i32 15, i32 4, i32 5, i32 15, i32 0, i32 5, i32 2, i32 6, i32 7, i32 8, i32 6, i32 7, i32 8>10; CHECK-NEXT: [[TMP9:%.*]] = shufflevector <16 x float> [[TMP3]], <16 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float poison, float 0.000000e+00, float poison, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 4, i32 24, i32 15, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>11; CHECK-NEXT: [[TMP10:%.*]] = fadd reassoc nsz arcp contract afn <16 x float> [[TMP7]], [[TMP9]]12; CHECK-NEXT: store <16 x float> [[TMP10]], ptr [[TMP5]], align 413; CHECK-NEXT: ret void14;15 %2 = getelementptr inbounds float, ptr %p, i64 216 %3 = getelementptr inbounds float, ptr %p, i64 417 %4 = load float, ptr %3, align 418 %5 = getelementptr inbounds float, ptr %p, i64 519 %6 = load float, ptr %5, align 1620 %7 = getelementptr inbounds float, ptr %p, i64 1521 %8 = load float, ptr %7, align 422 %9 = fadd reassoc nsz arcp contract afn float %8, 0.000000e+0023 %10 = getelementptr inbounds float, ptr %0, i64 224 store float %9, ptr %10, align 425 %11 = fadd reassoc nsz arcp contract afn float %4, 0.000000e+0026 %12 = getelementptr inbounds float, ptr %0, i64 327 store float %11, ptr %12, align 428 %13 = fadd reassoc nsz arcp contract afn float %6, 0.000000e+0029 %14 = getelementptr inbounds float, ptr %0, i64 430 store float %13, ptr %14, align 431 %15 = fadd reassoc nsz arcp contract afn float %8, 0.000000e+0032 %16 = getelementptr inbounds float, ptr %0, i64 533 store float %15, ptr %16, align 434 %17 = fadd reassoc nsz arcp contract afn float %4, 0.000000e+0035 %18 = load float, ptr %p, align 1636 %19 = getelementptr inbounds float, ptr %0, i64 637 store float %17, ptr %19, align 438 %20 = fadd reassoc nsz arcp contract afn float %6, 0.000000e+0039 %21 = getelementptr inbounds float, ptr %0, i64 740 store float %20, ptr %21, align 441 %22 = fadd reassoc nsz arcp contract afn float %8, 0.000000e+0042 %23 = load float, ptr %2, align 843 %24 = getelementptr inbounds float, ptr %0, i64 844 store float %22, ptr %24, align 445 %25 = fadd reassoc nsz arcp contract afn float %4, %1846 %26 = getelementptr inbounds float, ptr %0, i64 947 store float %25, ptr %26, align 448 %27 = fadd reassoc nsz arcp contract afn float %6, 0.000000e+0049 %28 = getelementptr inbounds float, ptr %0, i64 1050 store float %27, ptr %28, align 451 %29 = fadd reassoc nsz arcp contract afn float %8, %2352 %30 = getelementptr inbounds float, ptr %0, i64 1153 store float %29, ptr %30, align 454 %31 = getelementptr inbounds float, ptr %p, i64 655 %32 = load float, ptr %31, align 456 %33 = fadd reassoc nsz arcp contract afn float %32, 0.000000e+0057 %34 = getelementptr inbounds float, ptr %0, i64 1258 store float %33, ptr %34, align 459 %35 = getelementptr inbounds float, ptr %p, i64 760 %36 = load float, ptr %35, align 861 %37 = fadd reassoc nsz arcp contract afn float %36, 0.000000e+0062 %38 = getelementptr inbounds float, ptr %0, i64 1363 store float %37, ptr %38, align 464 %39 = getelementptr inbounds float, ptr %p, i64 865 %40 = load float, ptr %39, align 466 %41 = fadd reassoc nsz arcp contract afn float %40, 0.000000e+0067 %42 = getelementptr inbounds float, ptr %0, i64 1468 store float %41, ptr %42, align 469 %43 = fadd reassoc nsz arcp contract afn float %32, 0.000000e+0070 %44 = getelementptr inbounds float, ptr %0, i64 1571 store float %43, ptr %44, align 472 %45 = fadd reassoc nsz arcp contract afn float %36, 0.000000e+0073 %46 = getelementptr inbounds float, ptr %0, i64 1674 store float %45, ptr %46, align 475 %47 = fadd reassoc nsz arcp contract afn float %40, 0.000000e+0076 %48 = getelementptr inbounds float, ptr %0, i64 1777 store float %47, ptr %48, align 478 ret void79}80