diff options
author | Craig Topper <craig.topper@sifive.com> | 2023-04-07 23:38:04 -0700 |
---|---|---|
committer | Craig Topper <craig.topper@sifive.com> | 2023-04-08 00:04:09 -0700 |
commit | 09fecbbf5409e321f5e45b8120c26b12b8b742e6 (patch) | |
tree | 8e855d6fa47003514340d5c69c3d73642306d4f3 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp | |
parent | 11ad7d2935afe965c9e8c7ba4732215b404ff57f (diff) | |
download | llvm-09fecbbf5409e321f5e45b8120c26b12b8b742e6.zip llvm-09fecbbf5409e321f5e45b8120c26b12b8b742e6.tar.gz llvm-09fecbbf5409e321f5e45b8120c26b12b8b742e6.tar.bz2 |
[TableGen] Simplify TypeInfer::expandOverloads. NFC
Directly test the 5 overloaded types instead of doing extra
set creation and iteration.
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.cpp | 85 |
1 files changed, 35 insertions, 50 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp index a110497..a781746 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp @@ -819,56 +819,41 @@ void TypeInfer::expandOverloads(TypeSetByHwMode &VTS) { void TypeInfer::expandOverloads(TypeSetByHwMode::SetType &Out, const TypeSetByHwMode::SetType &Legal) { - std::set<MVT> Ovs; - for (MVT T : Out) { - if (!T.isOverloaded()) - continue; - - Ovs.insert(T); - // MachineValueTypeSet allows iteration and erasing. - Out.erase(T); - } - - for (MVT Ov : Ovs) { - switch (Ov.SimpleTy) { - case MVT::iPTRAny: - Out.insert(MVT::iPTR); - return; - case MVT::iAny: - for (MVT T : MVT::integer_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - for (MVT T : MVT::integer_fixedlen_vector_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - for (MVT T : MVT::integer_scalable_vector_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - return; - case MVT::fAny: - for (MVT T : MVT::fp_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - for (MVT T : MVT::fp_fixedlen_vector_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - for (MVT T : MVT::fp_scalable_vector_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - return; - case MVT::vAny: - for (MVT T : MVT::vector_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - return; - case MVT::Any: - for (MVT T : MVT::all_valuetypes()) - if (Legal.count(T)) - Out.insert(T); - return; - default: - break; - } + if (Out.count(MVT::iPTRAny)) { + Out.erase(MVT::iPTRAny); + Out.insert(MVT::iPTR); + } else if (Out.count(MVT::iAny)) { + Out.erase(MVT::iAny); + for (MVT T : MVT::integer_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + for (MVT T : MVT::integer_fixedlen_vector_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + for (MVT T : MVT::integer_scalable_vector_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + } else if (Out.count(MVT::fAny)) { + Out.erase(MVT::fAny); + for (MVT T : MVT::fp_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + for (MVT T : MVT::fp_fixedlen_vector_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + for (MVT T : MVT::fp_scalable_vector_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + } else if (Out.count(MVT::vAny)) { + Out.erase(MVT::vAny); + for (MVT T : MVT::vector_valuetypes()) + if (Legal.count(T)) + Out.insert(T); + } else if (Out.count(MVT::Any)) { + Out.erase(MVT::Any); + for (MVT T : MVT::all_valuetypes()) + if (Legal.count(T)) + Out.insert(T); } } |