Skip to content

Commit 9be25f6

Browse files
committed
Refactor flag checking/dropping code
1 parent 85a1116 commit 9be25f6

File tree

1 file changed

+10
-70
lines changed

1 file changed

+10
-70
lines changed

llvm/include/llvm/CodeGen/GlobalISel/GenericMachineInstrs.h

Lines changed: 10 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -36,79 +36,19 @@ class GenericMachineInstr : public MachineInstr {
3636
}
3737

3838
bool hasPoisonGeneratingFlags() const {
39-
switch (getOpcode()) {
40-
case TargetOpcode::G_ADD:
41-
case TargetOpcode::G_SUB:
42-
case TargetOpcode::G_MUL:
43-
case TargetOpcode::G_SHL:
44-
case TargetOpcode::G_TRUNC:
45-
return getFlag(NoUWrap) || getFlag(NoSWrap);
46-
47-
case TargetOpcode::G_UDIV:
48-
case TargetOpcode::G_SDIV:
49-
case TargetOpcode::G_ASHR:
50-
case TargetOpcode::G_LSHR:
51-
return getFlag(IsExact);
52-
53-
case TargetOpcode::G_OR:
54-
return getFlag(Disjoint);
55-
56-
case TargetOpcode::G_UITOFP:
57-
case TargetOpcode::G_ZEXT:
58-
return getFlag(NonNeg);
59-
60-
case TargetOpcode::G_FNEG:
61-
case TargetOpcode::G_FADD:
62-
case TargetOpcode::G_FSUB:
63-
case TargetOpcode::G_FMUL:
64-
case TargetOpcode::G_FDIV:
65-
case TargetOpcode::G_FREM:
66-
case TargetOpcode::G_FCMP:
67-
return getFlag(FmNoNans) || getFlag(FmNoInfs);
68-
69-
default:
70-
return false;
71-
}
39+
return getFlag(NoUWrap) || getFlag(NoSWrap) || getFlag(IsExact) ||
40+
getFlag(Disjoint) || getFlag(NonNeg) || getFlag(FmNoNans) ||
41+
getFlag(FmNoInfs);
7242
}
7343

7444
void dropPoisonGeneratingFlags() {
75-
switch (getOpcode()) {
76-
case TargetOpcode::G_ADD:
77-
case TargetOpcode::G_SUB:
78-
case TargetOpcode::G_MUL:
79-
case TargetOpcode::G_SHL:
80-
case TargetOpcode::G_TRUNC:
81-
clearFlag(NoUWrap);
82-
clearFlag(NoSWrap);
83-
break;
84-
85-
case TargetOpcode::G_UDIV:
86-
case TargetOpcode::G_SDIV:
87-
case TargetOpcode::G_ASHR:
88-
case TargetOpcode::G_LSHR:
89-
clearFlag(IsExact);
90-
break;
91-
92-
case TargetOpcode::G_OR:
93-
clearFlag(Disjoint);
94-
break;
95-
96-
case TargetOpcode::G_UITOFP:
97-
case TargetOpcode::G_ZEXT:
98-
clearFlag(NonNeg);
99-
break;
100-
101-
case TargetOpcode::G_FNEG:
102-
case TargetOpcode::G_FADD:
103-
case TargetOpcode::G_FSUB:
104-
case TargetOpcode::G_FMUL:
105-
case TargetOpcode::G_FDIV:
106-
case TargetOpcode::G_FREM:
107-
case TargetOpcode::G_FCMP:
108-
clearFlag(FmNoNans);
109-
clearFlag(FmNoInfs);
110-
break;
111-
}
45+
clearFlag(NoUWrap);
46+
clearFlag(NoSWrap);
47+
clearFlag(IsExact);
48+
clearFlag(Disjoint);
49+
clearFlag(NonNeg);
50+
clearFlag(FmNoNans);
51+
clearFlag(FmNoInfs);
11252
assert(!hasPoisonGeneratingFlags());
11353
}
11454
};

0 commit comments

Comments
 (0)