Skip to content

[InstCombine] Extra uses of truncated value prevent icmp_eq(trunc(x),c) -> icmp_eq(x,c) fold #162451

@RKSimon

Description

@RKSimon
define i1 @src(i8 %a0) {
  %tz = tail call range(i8 0, 9) i8 @llvm.cttz.i8(i8 %a0, i1 false)
  %tr = trunc i8 %tz to i4
  %c = icmp eq i4 %tr, 8
  call void @use(i4 %tr)
  ret i1 %c
}
define i1 @tgt(i8 %a0) {
  %tz = tail call range(i8 0, 9) i8 @llvm.cttz.i8(i8 %a0, i1 false)
  %c = icmp eq i8 %a0, 0
  %tr = trunc i8 %tz to i4
  call void @use(i4 %tr)
  ret i1 %c
}
declare void @use(i4)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions