Skip to content

Missed optimization: fold smax/smin+icmp eq into range check #157316

@Leo0506

Description

@Leo0506
define i1 @src(i32 %arg0, i32 %arg1) {
  %v0 = add i32 %arg1, -60
  %v1 = add i32 %v0, %arg0
  %v2 = tail call i32 @llvm.smax.i32(i32 %v1, i32 -155)
  %v3 = tail call i32 @llvm.smin.i32(i32 %v2, i32 100)
  %v4 = icmp eq i32 %v1, %v3
  ret i1 %v4
}


define i1 @tgt(i32 %arg0, i32 %arg1) {
  %sum = add i32 %arg0, %arg1
  %lower_bound = icmp sge i32 %sum, -95
  %upper_bound = icmp sle i32 %sum, 160
  %result = and i1 %lower_bound, %upper_bound
  ret i1 %result
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateResolved as duplicatellvm:instcombineCovers the InstCombine, InstSimplify and AggressiveInstCombine passesmissed-optimization

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions