[FPEnv] Added a special UnrollVectorOp method to deal with the chain on StrictFP...
authorKevin P. Neal <kevin.neal@sas.com>
Thu, 30 May 2019 16:44:47 +0000 (16:44 +0000)
committerKevin P. Neal <kevin.neal@sas.com>
Thu, 30 May 2019 16:44:47 +0000 (16:44 +0000)
commit2e1807678d4d49abfe03489641141d777baf9ad4
tree7b05978c5593fbb46e7622471214e84299b2d6b2
parent7c75ac0c60d623c8bbdc1b6d924e4ff85547b9ca
[FPEnv] Added a special UnrollVectorOp method to deal with the chain on StrictFP opcodes

This change creates UnrollVectorOp_StrictFP. The purpose of this is to address a failure that consistently occurs when calling StrictFP functions on vectors whose number of elements is 3 + 2n on most platforms, such as PowerPC or SystemZ. The old UnrollVectorOp method does not expect that the vector that it will unroll will have a chain, so it has an assert that prevents it from running if this is the case. This new StrictFP version of the method deals with the chain while unrolling the vector. With this new function in place during vector widending, llc can run vector-constrained-fp-intrinsics.ll for SystemZ successfully.

Submitted by: Drew Wock <drew.wock@sas.com>
Reviewed by: Cameron McInally, Kevin P. Neal
Approved by: Cameron McInally
Differential Revision: http://reviews.llvm.org/D62546

llvm-svn: 362112
llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll [new file with mode: 0644]