summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/StackProtector.cpp
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-01-20 19:35:22 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-01-20 19:35:22 +0000
commit450d1661be35e65ad77c0d45613e19e7a5d4b2f1 (patch)
tree4f8e3bd8d717d3c3da0db2f476bfd0ea5ca8232e /llvm/lib/CodeGen/StackProtector.cpp
parent15f60cb2baaa4393b32b45460fa8f0744a844467 (diff)
downloadbcm5719-llvm-450d1661be35e65ad77c0d45613e19e7a5d4b2f1.tar.gz
bcm5719-llvm-450d1661be35e65ad77c0d45613e19e7a5d4b2f1.zip
[X86] Teach how to combine a vselect into a movss/movsd
Add target specific rules for combining vselect dag nodes into movss/movsd when possible. If the vector type of the vselect dag node in input is either MVT::v4i13 or MVT::v4f32, then try to fold according to rules: 1) fold (vselect (build_vector (0, -1, -1, -1)), A, B) -> (movss A, B) 2) fold (vselect (build_vector (-1, 0, 0, 0)), A, B) -> (movss B, A) If the vector type of the vselect dag node in input is either MVT::v2i64 or MVT::v2f64 (and we have SSE2), then try to fold according to rules: 3) fold (vselect (build_vector (0, -1)), A, B) -> (movsd A, B) 4) fold (vselect (build_vector (-1, 0)), A, B) -> (movsd B, A) llvm-svn: 199683
Diffstat (limited to 'llvm/lib/CodeGen/StackProtector.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud