llvm-project
55be370f - [InstCombine] Fold frexp of select to select of frexp (#121227)

Commit
1 year ago
[InstCombine] Fold frexp of select to select of frexp (#121227) This patch implements an optimization to push select operations through frexp when one of the select operands is a constant. When we encounter: ``` define float @src(float %x, i1 %bool) { %select = select i1 %bool, float 1.000000e+00, float %x %frexp = tail call { float, i32 } @llvm.frexp.f32.i32(float %select) %frexp.0 = extractvalue { float, i32 } %frexp, 0 ret float %frexp.0 } ``` We transform it to: ``` define float @tgt(float %x, i1 %bool) { %frexp = tail call { float, i32 } @llvm.frexp.f32.i32(float %x) %frexp.0 = extractvalue { float, i32 } %frexp, 0 %select = select i1 %bool, float 5.000000e-01, float %frexp.0 ret float %select } ``` Fixes #92542
Author
Parents
Loading