Skip to content

Missed Optimization: eliminate redundant modulus when divisor divides previous modulus #157370

@Leo0506

Description

@Leo0506
define i8 @src(i64 %arg0) {
  %v0 = trunc i64 %arg0 to i8
  %v1 = urem i8 %v0, 25
  %v2 = urem i8 %v1, 5
  ret i8 %v2
}

define i8 @tgt(i64 %arg0) {
  %v0 = trunc i64 %arg0 to i8
  %v2 = urem i8 %v0, 5
  ret i8 %v2
}

godbolt: https://godbolt.org/z/ebK55TMnE
alive2: https://alive2.llvm.org/ce/z/pDxaza

Pattern found in: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/ffmpeg/optimized/ac3dec_fixed.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