@@ -36,79 +36,19 @@ class GenericMachineInstr : public MachineInstr {
36
36
}
37
37
38
38
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);
72
42
}
73
43
74
44
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);
112
52
assert (!hasPoisonGeneratingFlags ());
113
53
}
114
54
};
0 commit comments