[PATCH] D29489: Optimize SETCC + VSEL of incompatible or illegal types

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 8 19:26:40 PST 2017


efriedma added a comment.

For the SystemZ tests, would it make sense to auto-generate the CHECK lines use update_llc_test_checks.py?

Please clang-format the new code.



================
Comment at: lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp:547
+    else if (Cond.getOpcode() == ISD::SETCC)
+      std::tie(CL, CH) = SplitVSETCC(Cond.getNode(), DAG);
     // Check if there are already splitted versions of the vector available and
----------------
Does SplitVSETCC do something different from just calling SplitVector?  Your patch doesn't show any changes to avx512-mask-op.ll.


================
Comment at: lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:2932
+    // then) a CONCAT_VECTORS with undef(s).
+    ConvertOpc = ISD::TRUNCATE;
+  
----------------
Could you just perform the SIGN_EXTEND/TRUNCATE to match the scalar size, then EXTRACT_SUBVECTOR/CONCAT_SUBVECTORS to match the number of elements?  The invariants involving the relationship between the number of elements and the scalar sizes of MaskVT and ToMaskVT are confusing at best.


https://reviews.llvm.org/D29489





More information about the llvm-commits mailing list