mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-13 08:35:46 +00:00
R600/SI: Fix zext from i1 to i64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206437 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e1a38f7041
commit
003de065a3
@ -972,8 +972,12 @@ SDValue SITargetLowering::LowerZERO_EXTEND(SDValue Op,
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
return DAG.getNode(ISD::BUILD_PAIR, DL, VT, Op.getOperand(0),
|
||||
DAG.getConstant(0, MVT::i32));
|
||||
SDValue Src = Op.getOperand(0);
|
||||
if (Src.getValueType() != MVT::i32)
|
||||
Src = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i32, Src);
|
||||
|
||||
SDValue Zero = DAG.getConstant(0, MVT::i32);
|
||||
return DAG.getNode(ISD::BUILD_PAIR, DL, VT, Src, Zero);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
17
test/CodeGen/R600/uaddo.ll
Normal file
17
test/CodeGen/R600/uaddo.ll
Normal file
@ -0,0 +1,17 @@
|
||||
; RUN: llc -march=r600 -mcpu=SI < %s | FileCheck -check-prefix=SI %s
|
||||
|
||||
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) nounwind readnone
|
||||
|
||||
; SI-LABEL: @uaddo_i64_zext
|
||||
; SI: ADD
|
||||
; SI: ADDC
|
||||
; SI: ADDC
|
||||
define void @uaddo_i64_zext(i64 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
|
||||
%uadd = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %a, i64 %b) nounwind
|
||||
%val = extractvalue { i64, i1 } %uadd, 0
|
||||
%carry = extractvalue { i64, i1 } %uadd, 1
|
||||
%ext = zext i1 %carry to i64
|
||||
%add2 = add i64 %val, %ext
|
||||
store i64 %add2, i64 addrspace(1)* %out, align 8
|
||||
ret void
|
||||
}
|
@ -26,3 +26,14 @@ entry:
|
||||
store i32 %1, i32 addrspace(1)* %out
|
||||
ret void
|
||||
}
|
||||
|
||||
; SI-CHECK-LABEL: @zext_i1_to_i64
|
||||
; SI-CHECK: V_CMP_EQ_I32
|
||||
; SI-CHECK: V_CNDMASK_B32
|
||||
; SI-CHECK: V_MOV_B32_e32 v{{[0-9]+}}, 0
|
||||
define void @zext_i1_to_i64(i64 addrspace(1)* %out, i32 %a, i32 %b) nounwind {
|
||||
%cmp = icmp eq i32 %a, %b
|
||||
%ext = zext i1 %cmp to i64
|
||||
store i64 %ext, i64 addrspace(1)* %out, align 8
|
||||
ret void
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user