brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 70ab6d0 Raw
119 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 | FileCheck %s3 4define float @dotf(<4 x float> %x, <4 x float> %y) {5; CHECK-LABEL: @dotf(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    [[TMP0:%.*]] = fmul fast <4 x float> [[X:%.*]], [[Y:%.*]]8; CHECK-NEXT:    [[TMP1:%.*]] = call fast float @llvm.vector.reduce.fadd.v4f32(float 0.000000e+00, <4 x float> [[TMP0]])9; CHECK-NEXT:    ret float [[TMP1]]10;11entry:12  %vecext = extractelement <4 x float> %x, i32 013  %vecext1 = extractelement <4 x float> %y, i32 014  %mul = fmul fast float %vecext, %vecext115  %vecext.1 = extractelement <4 x float> %x, i32 116  %vecext1.1 = extractelement <4 x float> %y, i32 117  %mul.1 = fmul fast float %vecext.1, %vecext1.118  %add.1 = fadd fast float %mul.1, %mul19  %vecext.2 = extractelement <4 x float> %x, i32 220  %vecext1.2 = extractelement <4 x float> %y, i32 221  %mul.2 = fmul fast float %vecext.2, %vecext1.222  %add.2 = fadd fast float %mul.2, %add.123  %vecext.3 = extractelement <4 x float> %x, i32 324  %vecext1.3 = extractelement <4 x float> %y, i32 325  %mul.3 = fmul fast float %vecext.3, %vecext1.326  %add.3 = fadd fast float %mul.3, %add.227  ret float %add.328}29 30define double @dotd(ptr byval(<4 x double>) nocapture readonly align 32, ptr byval(<4 x double>) nocapture readonly align 32) {31; CHECK-LABEL: @dotd(32; CHECK-NEXT:  entry:33; CHECK-NEXT:    [[X:%.*]] = load <4 x double>, ptr [[TMP0:%.*]], align 3234; CHECK-NEXT:    [[Y:%.*]] = load <4 x double>, ptr [[TMP1:%.*]], align 3235; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast <4 x double> [[X]], [[Y]]36; CHECK-NEXT:    [[TMP3:%.*]] = call fast double @llvm.vector.reduce.fadd.v4f64(double 0.000000e+00, <4 x double> [[TMP2]])37; CHECK-NEXT:    ret double [[TMP3]]38;39entry:40  %x = load <4 x double>, ptr %0, align 3241  %y = load <4 x double>, ptr %1, align 3242  %vecext = extractelement <4 x double> %x, i32 043  %vecext1 = extractelement <4 x double> %y, i32 044  %mul = fmul fast double %vecext, %vecext145  %vecext.1 = extractelement <4 x double> %x, i32 146  %vecext1.1 = extractelement <4 x double> %y, i32 147  %mul.1 = fmul fast double %vecext.1, %vecext1.148  %add.1 = fadd fast double %mul.1, %mul49  %vecext.2 = extractelement <4 x double> %x, i32 250  %vecext1.2 = extractelement <4 x double> %y, i32 251  %mul.2 = fmul fast double %vecext.2, %vecext1.252  %add.2 = fadd fast double %mul.2, %add.153  %vecext.3 = extractelement <4 x double> %x, i32 354  %vecext1.3 = extractelement <4 x double> %y, i32 355  %mul.3 = fmul fast double %vecext.3, %vecext1.356  %add.3 = fadd fast double %mul.3, %add.257  ret double %add.358}59 60define float @dotfq(ptr nocapture readonly %x, ptr nocapture readonly %y) {61; CHECK-LABEL: @dotfq(62; CHECK-NEXT:  entry:63; CHECK-NEXT:    [[TMP0:%.*]] = load <4 x float>, ptr [[X:%.*]], align 1664; CHECK-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr [[Y:%.*]], align 1665; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast <4 x float> [[TMP1]], [[TMP0]]66; CHECK-NEXT:    [[TMP3:%.*]] = call fast float @llvm.vector.reduce.fadd.v4f32(float 0.000000e+00, <4 x float> [[TMP2]])67; CHECK-NEXT:    ret float [[TMP3]]68;69entry:70  %0 = load <4 x float>, ptr %x, align 1671  %1 = load <4 x float>, ptr %y, align 1672  %vecext = extractelement <4 x float> %0, i32 073  %vecext1 = extractelement <4 x float> %1, i32 074  %mul = fmul fast float %vecext1, %vecext75  %vecext.1 = extractelement <4 x float> %0, i32 176  %vecext1.1 = extractelement <4 x float> %1, i32 177  %mul.1 = fmul fast float %vecext1.1, %vecext.178  %add.1 = fadd fast float %mul.1, %mul79  %vecext.2 = extractelement <4 x float> %0, i32 280  %vecext1.2 = extractelement <4 x float> %1, i32 281  %mul.2 = fmul fast float %vecext1.2, %vecext.282  %add.2 = fadd fast float %mul.2, %add.183  %vecext.3 = extractelement <4 x float> %0, i32 384  %vecext1.3 = extractelement <4 x float> %1, i32 385  %mul.3 = fmul fast float %vecext1.3, %vecext.386  %add.3 = fadd fast float %mul.3, %add.287  ret float %add.388}89 90define double @dotdq(ptr nocapture readonly %x, ptr nocapture readonly %y) {91; CHECK-LABEL: @dotdq(92; CHECK-NEXT:  entry:93; CHECK-NEXT:    [[TMP0:%.*]] = load <4 x double>, ptr [[X:%.*]], align 3294; CHECK-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr [[Y:%.*]], align 3295; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast <4 x double> [[TMP1]], [[TMP0]]96; CHECK-NEXT:    [[TMP3:%.*]] = call fast double @llvm.vector.reduce.fadd.v4f64(double 0.000000e+00, <4 x double> [[TMP2]])97; CHECK-NEXT:    ret double [[TMP3]]98;99entry:100  %0 = load <4 x double>, ptr %x, align 32101  %1 = load <4 x double>, ptr %y, align 32102  %vecext = extractelement <4 x double> %0, i32 0103  %vecext1 = extractelement <4 x double> %1, i32 0104  %mul = fmul fast double %vecext1, %vecext105  %vecext.1 = extractelement <4 x double> %0, i32 1106  %vecext1.1 = extractelement <4 x double> %1, i32 1107  %mul.1 = fmul fast double %vecext1.1, %vecext.1108  %add.1 = fadd fast double %mul.1, %mul109  %vecext.2 = extractelement <4 x double> %0, i32 2110  %vecext1.2 = extractelement <4 x double> %1, i32 2111  %mul.2 = fmul fast double %vecext1.2, %vecext.2112  %add.2 = fadd fast double %mul.2, %add.1113  %vecext.3 = extractelement <4 x double> %0, i32 3114  %vecext1.3 = extractelement <4 x double> %1, i32 3115  %mul.3 = fmul fast double %vecext1.3, %vecext.3116  %add.3 = fadd fast double %mul.3, %add.2117  ret double %add.3118}119