Reapply "Use std::map<K, V> rather than std::map<K, std::unique_ptr<V>>""

Just avoid using std::map::emplace since it's not implemented in
libstdc++ 4.7.

Reapplies r222937, reverted in r222939.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222940 91177308-0d34-0410-b5e6-96231b3b80d8
R600/SI: Fix assertion on sign extend of 3 vectors

This was trying to create an MVT with 3x vectors which
created an invalid EVT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222942 91177308-0d34-0410-b5e6-96231b3b80d8
R600/SI: Use unordered not equal instructions
R600/SI: Make more unordered comparisons legal

This saves a second compare and an and / or by using
the unordered comparison instructions.
R600/SI: Use unordered equal instructions