OSDN Git Service

[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)
commit618cbae770bec26852ddcfcb98415772ead714ae
treefea0ad83795ae8c8a3ab54ac58d56756b96acbf1
parent4599584ea3de9e7f115eb1723de7d3234a38cd6e
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362112 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll [new file with mode: 0644]