aboutsummaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2023-04-07 23:38:04 -0700
committerCraig Topper <craig.topper@sifive.com>2023-04-08 00:04:09 -0700
commit09fecbbf5409e321f5e45b8120c26b12b8b742e6 (patch)
tree8e855d6fa47003514340d5c69c3d73642306d4f3 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp
parent11ad7d2935afe965c9e8c7ba4732215b404ff57f (diff)
downloadllvm-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.cpp85
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);
}
}