mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
InstCombine: Preserve nsw when folding X*(2^C) -> X << C
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222606 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
156d6ec86b
commit
fc1c5babaf
@ -179,6 +179,8 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) {
|
||||
|
||||
if (I.hasNoUnsignedWrap())
|
||||
Shl->setHasNoUnsignedWrap();
|
||||
if (I.hasNoSignedWrap() && NewCst->isNotMinSignedValue())
|
||||
Shl->setHasNoSignedWrap();
|
||||
|
||||
return Shl;
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ define i16 @mul_add_to_mul_1(i16 %x) {
|
||||
%add2 = add nsw i16 %x, %mul1
|
||||
ret i16 %add2
|
||||
; CHECK-LABEL: @mul_add_to_mul_1(
|
||||
; CHECK-NEXT: %add2 = mul i16 %x, 9
|
||||
; CHECK-NEXT: %add2 = mul nsw i16 %x, 9
|
||||
; CHECK-NEXT: ret i16 %add2
|
||||
}
|
||||
|
||||
@ -228,7 +228,7 @@ define i16 @mul_add_to_mul_2(i16 %x) {
|
||||
%add2 = add nsw i16 %mul1, %x
|
||||
ret i16 %add2
|
||||
; CHECK-LABEL: @mul_add_to_mul_2(
|
||||
; CHECK-NEXT: %add2 = mul i16 %x, 9
|
||||
; CHECK-NEXT: %add2 = mul nsw i16 %x, 9
|
||||
; CHECK-NEXT: ret i16 %add2
|
||||
}
|
||||
|
||||
@ -248,7 +248,7 @@ define i16 @mul_add_to_mul_4(i16 %a) {
|
||||
%add = add nsw i16 %mul1, %mul2
|
||||
ret i16 %add
|
||||
; CHECK-LABEL: @mul_add_to_mul_4(
|
||||
; CHECK-NEXT: %add = mul i16 %a, 9
|
||||
; CHECK-NEXT: %add = mul nsw i16 %a, 9
|
||||
; CHECK-NEXT: ret i16 %add
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,7 @@ define i32 @test25(i32 %a) {
|
||||
%div = sdiv i32 %shl, 2
|
||||
ret i32 %div
|
||||
; CHECK-LABEL: @test25(
|
||||
; CHECK-NEXT: %div = shl i32 %a, 1
|
||||
; CHECK-NEXT: %div = shl nsw i32 %a, 1
|
||||
; CHECK-NEXT: ret i32 %div
|
||||
}
|
||||
|
||||
@ -226,7 +226,7 @@ define i32 @test26(i32 %a) {
|
||||
%div = sdiv i32 %mul, 3
|
||||
ret i32 %div
|
||||
; CHECK-LABEL: @test26(
|
||||
; CHECK-NEXT: %div = shl i32 %a, 2
|
||||
; CHECK-NEXT: %div = shl nsw i32 %a, 2
|
||||
; CHECK-NEXT: ret i32 %div
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user