blob: d4aba97f65e10fc5cb9805f7bb6736132d2dda1d [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -S -p slp-vectorizer -mtriple riscv64 -mattr=+v | FileCheck %s
; Don't vectorize as the extract elements are expensive enough to be unprofitable.
define double @f(ptr %p, double %c) {
; CHECK-LABEL: define double @f(
; CHECK-SAME: ptr [[P:%.*]], double [[C:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[X0:%.*]] = load double, ptr [[P]], align 8
; CHECK-NEXT: [[Q:%.*]] = getelementptr double, ptr [[P]], i64 1
; CHECK-NEXT: [[X1:%.*]] = load double, ptr [[Q]], align 8
; CHECK-NEXT: [[M0:%.*]] = fmul double 2.000000e+00, [[X1]]
; CHECK-NEXT: [[TMP5:%.*]] = fadd double 3.000000e+00, [[M0]]
; CHECK-NEXT: [[M1:%.*]] = fmul double 2.000000e+00, [[X0]]
; CHECK-NEXT: [[TMP4:%.*]] = fadd double 3.000000e+00, [[M1]]
; CHECK-NEXT: [[RES:%.*]] = call double @llvm.fmuladd.f64(double [[C]], double [[TMP5]], double [[TMP4]])
; CHECK-NEXT: ret double [[RES]]
;
%x0 = load double, ptr %p
%q = getelementptr double, ptr %p, i64 1
%x1 = load double, ptr %q
%m0 = fmul double 2.0, %x1
%s0 = fadd double 3.0, %m0
%m1 = fmul double 2.0, %x0
%s1 = fadd double 3.0, %m1
%res = call double @llvm.fmuladd.f64(double %c, double %s0, double %s1)
ret double %res
}