mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
APIntify a test which is potentially unsafe otherwise, and fix the
nearby FIXME. I'm not sure what the right way to fix the Cell test was; if the approach I used isn't okay, please let me know. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60277 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
13441c57ec
commit
86f874d9bb
@ -1583,12 +1583,19 @@ TargetLowering::SimplifySetCC(MVT VT, SDValue N0, SDValue N1,
|
||||
// by changing cc.
|
||||
|
||||
// SETUGT X, SINTMAX -> SETLT X, 0
|
||||
if (Cond == ISD::SETUGT && OperandBitSize != 1 &&
|
||||
C1 == (~0ULL >> (65-OperandBitSize)))
|
||||
if (Cond == ISD::SETUGT &&
|
||||
C1 == APInt::getSignedMaxValue(OperandBitSize))
|
||||
return DAG.getSetCC(VT, N0, DAG.getConstant(0, N1.getValueType()),
|
||||
ISD::SETLT);
|
||||
|
||||
// FIXME: Implement the rest of these.
|
||||
// SETULT X, SINTMIN -> SETGT X, -1
|
||||
if (Cond == ISD::SETULT &&
|
||||
C1 == APInt::getSignedMinValue(OperandBitSize)) {
|
||||
SDValue ConstMinusOne =
|
||||
DAG.getConstant(APInt::getAllOnesValue(OperandBitSize),
|
||||
N1.getValueType());
|
||||
return DAG.getSetCC(VT, N0, ConstMinusOne, ISD::SETGT);
|
||||
}
|
||||
|
||||
// Fold bit comparisons when we can.
|
||||
if ((Cond == ISD::SETEQ || Cond == ISD::SETNE) &&
|
||||
|
@ -204,7 +204,7 @@ entry:
|
||||
|
||||
define i16 @icmp_ult_immed04_i16(i16 %arg1, i16 %val1, i16 %val2) nounwind {
|
||||
entry:
|
||||
%A = icmp ult i16 %arg1, 32768
|
||||
%A = icmp ult i16 %arg1, 32769
|
||||
%B = select i1 %A, i16 %val1, i16 %val2
|
||||
ret i16 %B
|
||||
}
|
||||
|
22
test/CodeGen/X86/2008-11-29-ULT-Sign.ll
Normal file
22
test/CodeGen/X86/2008-11-29-ULT-Sign.ll
Normal file
@ -0,0 +1,22 @@
|
||||
; RUN: llvm-as < %s | llc -mtriple=i686-pc-linux-gnu | grep "jns" | count 1
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
|
||||
target triple = "i686-pc-linux-gnu"
|
||||
|
||||
define i32 @a(i32 %x) nounwind {
|
||||
entry:
|
||||
%cmp = icmp ult i32 %x, -2147483648 ; <i1> [#uses=1]
|
||||
br i1 %cmp, label %if.end, label %if.then
|
||||
|
||||
if.then: ; preds = %entry
|
||||
%call = call i32 (...)* @b() ; <i32> [#uses=0]
|
||||
br label %if.end
|
||||
|
||||
if.end: ; preds = %if.then, %entry
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.end
|
||||
ret i32 undef
|
||||
}
|
||||
|
||||
declare i32 @b(...)
|
||||
|
Loading…
Reference in New Issue
Block a user