Skip to content

Commit

Permalink
R600/SI: Use ZeroOrNegativeOneBooleanContent
Browse files Browse the repository at this point in the history
This sort of doesn't matter since the setcc type is i1, but
this previously was using the default UndefinedBooleanContent. This
makes it more consistent with R600. This enables more optimizations
which typically give up on UndefinedBooleanContent. For example,
there is already a special case target DAG combine for
setcc + sext which can be eliminated in favor of what the generic
DAG combiner can do if it assumes boolean values are sign extended.
Since -1 is an inline immediate, using it is basically free and the
backend already uses it when a boolean value is needed in a wider type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222850 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
arsenm committed Nov 26, 2014
1 parent 74eb264 commit b69378a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
3 changes: 3 additions & 0 deletions lib/Target/R600/AMDGPUISelLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,9 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(TargetMachine &TM) :
setTargetDAGCombine(ISD::SELECT_CC);
setTargetDAGCombine(ISD::STORE);

setBooleanContents(ZeroOrNegativeOneBooleanContent);
setBooleanVectorContents(ZeroOrNegativeOneBooleanContent);

setSchedulingPreference(Sched::RegPressure);
setJumpIsExpensive(true);

Expand Down
2 changes: 0 additions & 2 deletions lib/Target/R600/R600ISelLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,6 @@ R600TargetLowering::R600TargetLowering(TargetMachine &TM) :
setOperationAction(ISD::SUBE, VT, Expand);
}

setBooleanContents(ZeroOrNegativeOneBooleanContent);
setBooleanVectorContents(ZeroOrNegativeOneBooleanContent);
setSchedulingPreference(Sched::Source);
}

Expand Down

0 comments on commit b69378a

Please sign in to comment.