[PATCH] Make it possible for ints/floats to return different values from getBooleanContents()
Daniel Sanders
daniel.sanders at imgtec.com
Tue Jul 8 12:45:08 PDT 2014
================
Comment at: include/llvm/Target/TargetLowering.h:285
@@ -283,1 +284,3 @@
+ /// vectors instead of the way they treat scalars.
+ BooleanContent getBooleanContentsOLD(bool isVec) const {
return isVec ? BooleanVectorContents : BooleanContents;
----------------
hfinkel at anl.gov wrote:
> Please remove this (we don't need the OLD version any more).
Ok.
================
Comment at: lib/CodeGen/SelectionDAG/DAGCombiner.cpp:4524
@@ -4523,1 +4523,3 @@
+ // We can't do this reliably if integer based booleans have different contents
+ // to floating point based booleans.
if (VT.isInteger() &&
----------------
hfinkel at anl.gov wrote:
> I'm missing something here... why not?
We can't tell whether we have an integer-based boolean or a floating-point-based boolean unless we can find the SETCC that produced it and inspect its operands. This is fairly easy if C is the SETCC node, but it can potentially be undiscoverable (or not reasonably discoverable). For example, it could be in another basic block or it could require searching a complicated expression.
================
Comment at: lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:265
@@ +264,3 @@
+ // If integer and float booleans have different contents then we can't
+ // reliably optimize in all cases.
+ if (TLI.getBooleanContents(false, false) !=
----------------
hfinkel at anl.gov wrote:
> Again, please explain.
It's the same reason as the other one but here I attempt to cover the most likely case where Cond is a SETCC.
http://reviews.llvm.org/D4389
More information about the llvm-commits
mailing list