Skip to content

Missed optimization: (x & -2^C) -1 & -2^C + 2^C -> x & -2^C #152804

@zxt5

Description

@zxt5
define i32 @src(i32 %0) {
  %v0 = and i32 %0, -4
  %v1 = add i32 %v0, -1
  %v2 = and i32 %v1, -4
  %v3 = add nuw i32 %v2, 4
  ret i32 %v3
}

define i32 @tgt(i32 %0) {
  %v0 = and i32 %0, -4
  ret i32 %v0
}

alive2: https://alive2.llvm.org/ce/z/PVar64
godbolt: https://godbolt.org/z/h65Kneqzh

Found this pattern in: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/opencv/optimized/t1.ll

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions