mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
InstSimplify: div %X, 0 -> undef
We already optimized rem %X, 0 to undef, we should do the same for div. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223919 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f492c9e612
commit
1297775557
@ -1011,6 +1011,10 @@ static Value *SimplifyDiv(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
|
|||||||
if (match(Op1, m_Undef()))
|
if (match(Op1, m_Undef()))
|
||||||
return Op1;
|
return Op1;
|
||||||
|
|
||||||
|
// X / 0 -> undef, we don't need to preserve faults!
|
||||||
|
if (match(Op1, m_Zero()))
|
||||||
|
return UndefValue::get(Op1->getType());
|
||||||
|
|
||||||
// undef / X -> 0
|
// undef / X -> 0
|
||||||
if (match(Op0, m_Undef()))
|
if (match(Op0, m_Undef()))
|
||||||
return Constant::getNullValue(Op0->getType());
|
return Constant::getNullValue(Op0->getType());
|
||||||
|
@ -160,3 +160,17 @@ define <4 x i8> @test19(<4 x i8> %a) {
|
|||||||
%b = shl <4 x i8> %a, <i8 8, i8 9, i8 undef, i8 -1>
|
%b = shl <4 x i8> %a, <i8 8, i8 9, i8 undef, i8 -1>
|
||||||
ret <4 x i8> %b
|
ret <4 x i8> %b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; CHECK-LABEL: @test20
|
||||||
|
; CHECK: ret i32 undef
|
||||||
|
define i32 @test20(i32 %a) {
|
||||||
|
%b = udiv i32 %a, 0
|
||||||
|
ret i32 %b
|
||||||
|
}
|
||||||
|
|
||||||
|
; CHECK-LABEL: @test21
|
||||||
|
; CHECK: ret i32 undef
|
||||||
|
define i32 @test21(i32 %a) {
|
||||||
|
%b = sdiv i32 %a, 0
|
||||||
|
ret i32 %b
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user