[llvm] fa8b737 - [SLP][RISCV] Add test for 3 element build vector feeding reduce

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 11 15:57:00 PDT 2024


Author: Philip Reames
Date: 2024-09-11T15:56:53-07:00
New Revision: fa8b737a81c310b297d1120dae1f915c63486498

URL: https://github.com/llvm/llvm-project/commit/fa8b737a81c310b297d1120dae1f915c63486498
DIFF: https://github.com/llvm/llvm-project/commit/fa8b737a81c310b297d1120dae1f915c63486498.diff

LOG: [SLP][RISCV] Add test for 3 element build vector feeding reduce

Our costs for build vectors are currently a bit off which inhibits
vectorization.  Fix forthcoming.

Added: 
    

Modified: 
    llvm/test/Transforms/SLPVectorizer/RISCV/vec3-base.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/SLPVectorizer/RISCV/vec3-base.ll b/llvm/test/Transforms/SLPVectorizer/RISCV/vec3-base.ll
index faffe16f8e9cd9..6dd9242989b627 100644
--- a/llvm/test/Transforms/SLPVectorizer/RISCV/vec3-base.ll
+++ b/llvm/test/Transforms/SLPVectorizer/RISCV/vec3-base.ll
@@ -793,6 +793,25 @@ entry:
   ret double %add
 }
 
+define float @reduce_fadd_after_fmul_of_buildvec(float %a, float %b, float %c) {
+; CHECK-LABEL: @reduce_fadd_after_fmul_of_buildvec(
+; CHECK-NEXT:    [[MUL_0:%.*]] = fmul fast float [[A:%.*]], 1.000000e+01
+; CHECK-NEXT:    [[MUL_1:%.*]] = fmul fast float [[B:%.*]], 1.000000e+01
+; CHECK-NEXT:    [[MUL_2:%.*]] = fmul fast float [[C:%.*]], 1.000000e+01
+; CHECK-NEXT:    [[ADD_0:%.*]] = fadd fast float [[MUL_0]], [[MUL_1]]
+; CHECK-NEXT:    [[ADD_1:%.*]] = fadd fast float [[ADD_0]], [[MUL_2]]
+; CHECK-NEXT:    ret float [[ADD_1]]
+;
+  %mul.0 = fmul fast float %a, 10.0
+  %mul.1 = fmul fast float %b, 10.0
+  %mul.2 = fmul fast float %c, 10.0
+
+  %add.0 = fadd fast float %mul.0, %mul.1
+  %add.1 = fadd fast float %add.0, %mul.2
+  ret float %add.1
+}
+
+
 declare float @llvm.fmuladd.f32(float, float, float)
 
 declare double @llvm.fmuladd.f64(double, double, double)


        


More information about the llvm-commits mailing list