mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
Make it possible for ints/floats to return different values from getBooleanContents()
Summary: On MIPS32r6/MIPS64r6, floating point comparisons return 0 or -1 but integer comparisons return 0 or 1. Updated the various uses of getBooleanContents. Two simplifications had to be disabled when float and int boolean contents differ: - ScalarizeVecRes_VSELECT except when the kind of boolean contents is trivially discoverable (i.e. when the condition of the VSELECT is a SETCC node). - visitVSELECT (select C, 0, 1) -> (xor C, 1). Come to think of it, this one could test for the common case of 'C' being a SETCC too. Preserved existing behaviour for all other targets and updated the affected MIPS32r6/MIPS64r6 tests. This also fixes the pi benchmark where the 'low' variable was counting in the wrong direction because it thought it could simply add the result of the comparison. Reviewers: hfinkel Reviewed By: hfinkel Subscribers: hfinkel, jholewinski, mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D4389 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212697 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -570,8 +570,8 @@ public:
|
||||
|
||||
/// getBoolExtOrTrunc - Convert Op, which must be of integer type, to the
|
||||
/// integer type VT, by using an extension appropriate for the target's
|
||||
/// BooleanContent or truncating it.
|
||||
SDValue getBoolExtOrTrunc(SDValue Op, SDLoc SL, EVT VT);
|
||||
/// BooleanContent for type OpVT or truncating it.
|
||||
SDValue getBoolExtOrTrunc(SDValue Op, SDLoc SL, EVT VT, EVT OpVT);
|
||||
|
||||
/// getNOT - Create a bitwise NOT operation as (XOR Val, -1).
|
||||
SDValue getNOT(SDLoc DL, SDValue Val, EVT VT);
|
||||
|
Reference in New Issue
Block a user