1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/CodeGen/SystemZ/vec-const-19.ll
Jonas Paulsson 53e0093564 [SystemZ] Wait with selection of legal vector/FP constants until Select().
This patch aims to make sure that any such constant that can be generated
with a vector instruction (for example VGBM) is recognized as such during
legalization and kept as a target independent node through post-legalize
DAGCombining.

Two new functions named isVectorConstantLegal() and loadVectorConstant()
replace old ways of handling vector/FP constants.

A new struct named SystemZVectorConstantInfo is used to cache the results of
isVectorConstantLegal() and pass them onto loadVectorConstant().

Support for fp128 constants in the presence of FeatureVectorEnhancements1
(z14) has been added.

Review: Ulrich Weigand
https://reviews.llvm.org/D58270

llvm-svn: 354896
2019-02-26 16:47:59 +00:00

19 lines
603 B
LLVM

; Test that a scalar FP constant can be reused from a vector splat constant
; of the same value.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
define void @fun() {
; CHECK-LABEL: fun:
; CHECK: vgmg %v0, 2, 10
; CHECK-NOT: vgmg %v0, 2, 10
%tmp = fadd <2 x double> zeroinitializer, <double 1.000000e+00, double 1.000000e+00>
%tmp1 = fmul <2 x double> %tmp, <double 5.000000e-01, double 5.000000e-01>
store <2 x double> %tmp1, <2 x double>* undef
%tmp2 = load double, double* undef
%tmp3 = fmul double %tmp2, 5.000000e-01
store double %tmp3, double* undef
ret void
}