[llvm] Added fix to enable constant folding that is missing for math library functions (scalbln , scalbn, ldexp) (PR #169893)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 28 05:43:14 PST 2025
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results
* 166432 tests passed
* 2870 tests skipped
* 6 tests failed
## Failed Tests
(click on a test name to see its output)
### LLVM
<details>
<summary>LLVM.Transforms/InstCombine/RISCV/libcall-arg-exts.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll -passes=instcombine -S -mtriple=riscv64 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=instcombine -S -mtriple=riscv64
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll:13:10: error: CHECK: expected string not found in input
# | ; CHECK: call double @ldexp
# | ^
# | <stdin>:20:20: note: scanning from here
# | define double @fun1(i32 %x) {
# | ^
# | <stdin>:21:12: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll:21:10: error: CHECK: expected string not found in input
# | ; CHECK: call float @ldexpf
# | ^
# | <stdin>:25:19: note: scanning from here
# | define float @fun2(i32 %x) {
# | ^
# | <stdin>:26:13: note: possible intended match here
# | %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll:29:10: error: CHECK: expected string not found in input
# | ; CHECK: call fp128 @ldexpl
# | ^
# | <stdin>:30:19: note: scanning from here
# | define fp128 @fun3(i8 zeroext %x) {
# | ^
# | <stdin>:32:13: note: possible intended match here
# | %ldexpl1 = call fp128 @llvm.ldexp.f128.i32(fp128 0xL00000000000000003FFF000000000000, i32 %1)
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/RISCV/libcall-arg-exts.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 15:
# | 16: declare float @exp2f(float)
# | 17:
# | 18: declare fp128 @exp2l(fp128)
# | 19:
# | 20: define double @fun1(i32 %x) {
# | check:13'0 X~~~~~~~~~~ error: no match found
# | 21: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | check:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:13'1 ? possible intended match
# | 22: ret double %ldexp1
# | check:13'0 ~~~~~~~~~~~~~~~~~~~~
# | 23: }
# | check:13'0 ~~
# | 24:
# | check:13'0 ~
# | 25: define float @fun2(i32 %x) {
# | check:13'0 ~~~~~~~~~~~~~~~~~~
# | check:21'0 X~~~~~~~~~~ error: no match found
# | 26: %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | check:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:21'1 ? possible intended match
# | 27: ret float %ldexpf1
# | check:21'0 ~~~~~~~~~~~~~~~~~~~~
# | 28: }
# | check:21'0 ~~
# | 29:
# | check:21'0 ~
# | 30: define fp128 @fun3(i8 zeroext %x) {
# | check:21'0 ~~~~~~~~~~~~~~~~~~
# | check:29'0 X~~~~~~~~~~~~~~~~~ error: no match found
# | 31: %1 = zext i8 %x to i32
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~~~~~
# | 32: %ldexpl1 = call fp128 @llvm.ldexp.f128.i32(fp128 0xL00000000000000003FFF000000000000, i32 %1)
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:29'1 ? possible intended match
# | 33: ret fp128 %ldexpl1
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~
# | 34: }
# | check:29'0 ~~
# | 35:
# | check:29'0 ~
# | 36: declare ptr @__memccpy_chk(ptr, ptr, i32, i64, i64)
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 37:
# | check:29'0 ~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/InstCombine/SystemZ/libcall-arg-exts.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll -passes=instcombine -S -mtriple=systemz-unknown | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=instcombine -S -mtriple=systemz-unknown
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll:13:10: error: CHECK: expected string not found in input
# | ; CHECK: call double @ldexp
# | ^
# | <stdin>:20:20: note: scanning from here
# | define double @fun1(i32 %x) {
# | ^
# | <stdin>:21:12: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll:21:10: error: CHECK: expected string not found in input
# | ; CHECK: call float @ldexpf
# | ^
# | <stdin>:25:19: note: scanning from here
# | define float @fun2(i32 %x) {
# | ^
# | <stdin>:26:13: note: possible intended match here
# | %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll:29:10: error: CHECK: expected string not found in input
# | ; CHECK: call fp128 @ldexpl
# | ^
# | <stdin>:30:19: note: scanning from here
# | define fp128 @fun3(i8 zeroext %x) {
# | ^
# | <stdin>:32:13: note: possible intended match here
# | %ldexpl1 = call fp128 @llvm.ldexp.f128.i32(fp128 0xL00000000000000003FFF000000000000, i32 %1)
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/SystemZ/libcall-arg-exts.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 15:
# | 16: declare float @exp2f(float)
# | 17:
# | 18: declare fp128 @exp2l(fp128)
# | 19:
# | 20: define double @fun1(i32 %x) {
# | check:13'0 X~~~~~~~~~~ error: no match found
# | 21: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | check:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:13'1 ? possible intended match
# | 22: ret double %ldexp1
# | check:13'0 ~~~~~~~~~~~~~~~~~~~~
# | 23: }
# | check:13'0 ~~
# | 24:
# | check:13'0 ~
# | 25: define float @fun2(i32 %x) {
# | check:13'0 ~~~~~~~~~~~~~~~~~~
# | check:21'0 X~~~~~~~~~~ error: no match found
# | 26: %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | check:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:21'1 ? possible intended match
# | 27: ret float %ldexpf1
# | check:21'0 ~~~~~~~~~~~~~~~~~~~~
# | 28: }
# | check:21'0 ~~
# | 29:
# | check:21'0 ~
# | 30: define fp128 @fun3(i8 zeroext %x) {
# | check:21'0 ~~~~~~~~~~~~~~~~~~
# | check:29'0 X~~~~~~~~~~~~~~~~~ error: no match found
# | 31: %1 = zext i8 %x to i32
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~~~~~
# | 32: %ldexpl1 = call fp128 @llvm.ldexp.f128.i32(fp128 0xL00000000000000003FFF000000000000, i32 %1)
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:29'1 ? possible intended match
# | 33: ret fp128 %ldexpl1
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~
# | 34: }
# | check:29'0 ~~
# | 35:
# | check:29'0 ~
# | 36: declare ptr @__memccpy_chk(ptr, ptr, i32, i64, i64)
# | check:29'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 37:
# | check:29'0 ~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/InstCombine/exp2-1.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll -passes=instcombine -S -mtriple=unknown | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll -check-prefixes=LDEXP32
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=instcombine -S -mtriple=unknown
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll -check-prefixes=LDEXP32
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:24:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:21:31: note: scanning from here
# | define double @test_simplify1(i32 %x) {
# | ^
# | <stdin>:22:8: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:49:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:27:25: note: scanning from here
# | %1 = sext i16 %x to i32
# | ^
# | <stdin>:27:25: note: with "TMP1" equal to "%1"
# | %1 = sext i16 %x to i32
# | ^
# | <stdin>:28:10: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:74:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:33:24: note: scanning from here
# | %1 = sext i8 %x to i32
# | ^
# | <stdin>:33:24: note: with "TMP1" equal to "%1"
# | %1 = sext i8 %x to i32
# | ^
# | <stdin>:34:10: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:99:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXPF:%.*]] = call float @ldexpf(float 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:38:30: note: scanning from here
# | define float @test_simplify4(i32 %x) {
# | ^
# | <stdin>:39:8: note: possible intended match here
# | %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:153:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:50:25: note: scanning from here
# | %1 = zext i16 %x to i32
# | ^
# | <stdin>:50:25: note: with "TMP1" equal to "%1"
# | %1 = zext i16 %x to i32
# | ^
# | <stdin>:51:10: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:179:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:56:24: note: scanning from here
# | %1 = zext i8 %x to i32
# | ^
# | <stdin>:56:24: note: with "TMP1" equal to "%1"
# | %1 = zext i8 %x to i32
# | ^
# | <stdin>:57:10: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:205:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXPF:%.*]] = call float @ldexpf(float 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:62:24: note: scanning from here
# | %1 = zext i8 %x to i32
# | ^
# | <stdin>:62:24: note: with "TMP1" equal to "%1"
# | %1 = zext i8 %x to i32
# | ^
# | <stdin>:63:11: note: possible intended match here
# | %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %1)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:337:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:91:49: note: scanning from here
# | define double @test_readonly_exp2_f64_of_sitofp(i32 %x) {
# | ^
# | <stdin>:92:8: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:361:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXPF:%.*]] = call float @ldexpf(float 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:96:49: note: scanning from here
# | define float @test_readonly_exp2f_f32_of_sitofp(i32 %x) {
# | ^
# | <stdin>:97:8: note: possible intended match here
# | %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:386:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXPL:%.*]] = call fp128 @ldexpl(fp128 0xL00000000000000003FFF000000000000, i32 [[X:%.*]])
# | ^
# | <stdin>:101:51: note: scanning from here
# | define fp128 @test_readonly_exp2l_fp128_of_sitofp(i32 %x) {
# | ^
# | <stdin>:102:11: note: possible intended match here
# | %ldexpl1 = call fp128 @llvm.ldexp.f128.i32(fp128 0xL00000000000000003FFF000000000000, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll:406:17: error: LDEXP32-NEXT: expected string not found in input
# | ; LDEXP32-NEXT: [[LDEXPF:%.*]] = call nnan ninf float @ldexpf(float 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:106:55: note: scanning from here
# | define float @test_readonly_exp2f_f32_of_sitofp_flags(i32 %x) {
# | ^
# | <stdin>:107:5: note: possible intended match here
# | %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/exp2-1.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 16: ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
# | 17: declare <2 x float> @llvm.exp2.v2f32(<2 x float>) #0
# | 18:
# | 19: declare fp128 @exp2l(fp128)
# | 20:
# | 21: define double @test_simplify1(i32 %x) {
# | next:24'0 X~~~~~~~~~ error: no match found
# | 22: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | next:24'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:24'1 ? possible intended match
# | 23: ret double %ldexp1
# | next:24'0 ~~~~~~~~~~~~~~~~~~~~
# | 24: }
# | next:24'0 ~~
# | 25:
# | next:24'0 ~
# | 26: define double @test_simplify2(i16 signext %x) {
# | next:24'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 27: %1 = sext i16 %x to i32
# | next:49'0 X error: no match found
# | next:49'1 with "TMP1" equal to "%1"
# | 28: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | next:49'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:49'2 ? possible intended match
# | 29: ret double %ldexp1
# | next:49'0 ~~~~~~~~~~~~~~~~~~~~
# | 30: }
# | next:49'0 ~~
# | 31:
# | next:49'0 ~
# | 32: define double @test_simplify3(i8 signext %x) {
# | next:49'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 33: %1 = sext i8 %x to i32
# | next:74'0 X error: no match found
# | next:74'1 with "TMP1" equal to "%1"
# | 34: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | next:74'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:74'2 ? possible intended match
# | 35: ret double %ldexp1
# | next:74'0 ~~~~~~~~~~~~~~~~~~~~
# | 36: }
# | next:74'0 ~~
# | 37:
# | next:74'0 ~
# | 38: define float @test_simplify4(i32 %x) {
# | next:74'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:99'0 X~~~~~~~~~ error: no match found
# | 39: %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:99'1 ? possible intended match
# | 40: ret float %ldexpf1
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~
# | 41: }
# | next:99'0 ~~
# | 42:
# | next:99'0 ~
# | 43: define double @test_no_simplify1(i32 %x) {
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 44: %conv = uitofp i32 %x to double
# | 45: %ret = call double @exp2(double %conv)
# | 46: ret double %ret
# | 47: }
# | 48:
# | 49: define double @test_simplify6(i16 zeroext %x) {
# | 50: %1 = zext i16 %x to i32
# | next:153'0 X error: no match found
# | next:153'1 with "TMP1" equal to "%1"
# | 51: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | next:153'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:153'2 ? possible intended match
# | 52: ret double %ldexp1
# | next:153'0 ~~~~~~~~~~~~~~~~~~~~
# | 53: }
# | next:153'0 ~~
# | 54:
# | next:153'0 ~
# | 55: define double @test_simplify7(i8 zeroext %x) {
# | next:153'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 56: %1 = zext i8 %x to i32
# | next:179'0 X error: no match found
# | next:179'1 with "TMP1" equal to "%1"
# | 57: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | next:179'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:179'2 ? possible intended match
# | 58: ret double %ldexp1
# | next:179'0 ~~~~~~~~~~~~~~~~~~~~
# | 59: }
# | next:179'0 ~~
# | 60:
# | next:179'0 ~
# | 61: define float @test_simplify8(i8 zeroext %x) {
# | next:179'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 62: %1 = zext i8 %x to i32
# | next:205'0 X error: no match found
# | next:205'1 with "TMP1" equal to "%1"
# | 63: %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %1)
# | next:205'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:205'2 ? possible intended match
# | 64: ret float %ldexpf1
# | next:205'0 ~~~~~~~~~~~~~~~~~~~~
# | 65: }
# | next:205'0 ~~
# | 66:
# | next:205'0 ~
# | 67: define double @test_simplify9(i8 zeroext %x) {
# | next:205'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 68: %1 = zext i8 %x to i32
# | .
# | .
# | .
# | 86: %1 = sext <2 x i8> %x to <2 x i32>
# | 87: %r = call nnan <2 x float> @llvm.ldexp.v2f32.v2i32(<2 x float> splat (float 1.000000e+00), <2 x i32> %1)
# | 88: ret <2 x float> %r
# | 89: }
# | 90:
# | 91: define double @test_readonly_exp2_f64_of_sitofp(i32 %x) {
# | next:337'0 X~~~~~~~~~ error: no match found
# | 92: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | next:337'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:337'1 ? possible intended match
# | 93: ret double %ldexp1
# | next:337'0 ~~~~~~~~~~~~~~~~~~~~
# | 94: }
# | next:337'0 ~~
# | 95:
# | next:337'0 ~
# | 96: define float @test_readonly_exp2f_f32_of_sitofp(i32 %x) {
# | next:337'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:361'0 X~~~~~~~~~ error: no match found
# | 97: %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | next:361'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:361'1 ? possible intended match
# | 98: ret float %ldexpf1
# | next:361'0 ~~~~~~~~~~~~~~~~~~~~
# | 99: }
# | next:361'0 ~~
# | 100:
# | next:361'0 ~
# | 101: define fp128 @test_readonly_exp2l_fp128_of_sitofp(i32 %x) {
# | next:361'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:386'0 X~~~~~~~~~ error: no match found
# | 102: %ldexpl1 = call fp128 @llvm.ldexp.f128.i32(fp128 0xL00000000000000003FFF000000000000, i32 %x)
# | next:386'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:386'1 ? possible intended match
# | 103: ret fp128 %ldexpl1
# | next:386'0 ~~~~~~~~~~~~~~~~~~~~
# | 104: }
# | next:386'0 ~~
# | 105:
# | next:386'0 ~
# | 106: define float @test_readonly_exp2f_f32_of_sitofp_flags(i32 %x) {
# | next:386'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:406'0 X~~~~~~~~~ error: no match found
# | 107: %ldexpf1 = call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | next:406'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:406'1 ? possible intended match
# | 108: ret float %ldexpf1
# | next:406'0 ~~~~~~~~~~~~~~~~~~~~
# | 109: }
# | next:406'0 ~~
# | 110:
# | next:406'0 ~
# | 111: ; Function Attrs: nocallback nofree nounwind willreturn memory(errnomem: write)
# | next:406'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 112: declare double @ldexp(double, i32) #1
# | next:406'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/InstCombine/pow-to-ldexp.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -passes=instcombine /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=CHECK,LDEXP,LDEXP-EXP2 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -passes=instcombine /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=CHECK,LDEXP,LDEXP-EXP2 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll:328:15: error: LDEXP-NEXT: expected string not found in input
# | ; LDEXP-NEXT: [[LDEXPF:%.*]] = tail call float @ldexpf(float 1.000000e+00, i32 [[X]])
# | ^
# | <stdin>:107:61: note: scanning from here
# | define float @libcall_powf_sitofp_f32_const_base_2(i32 %x) {
# | ^
# | <stdin>:107:61: note: with "X" equal to "%x"
# | define float @libcall_powf_sitofp_f32_const_base_2(i32 %x) {
# | ^
# | <stdin>:108:11: note: possible intended match here
# | %ldexpf1 = tail call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll:345:15: error: LDEXP-NEXT: expected string not found in input
# | ; LDEXP-NEXT: [[LDEXPF:%.*]] = tail call nnan nsz float @ldexpf(float 1.000000e+00, i32 [[X]])
# | ^
# | <stdin>:112:68: note: scanning from here
# | define float @libcall_powf_sitofp_f32_const_base_2__flags(i32 %x) {
# | ^
# | <stdin>:112:68: note: with "X" equal to "%x"
# | define float @libcall_powf_sitofp_f32_const_base_2__flags(i32 %x) {
# | ^
# | <stdin>:113:5: note: possible intended match here
# | %ldexpf1 = tail call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/pow-to-ldexp.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 102:
# | 103: declare double @pow(double, double)
# | 104:
# | 105: declare fp128 @powl(fp128, fp128)
# | 106:
# | 107: define float @libcall_powf_sitofp_f32_const_base_2(i32 %x) {
# | next:328'0 X error: no match found
# | next:328'1 with "X" equal to "%x"
# | 108: %ldexpf1 = tail call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | next:328'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:328'2 ? possible intended match
# | 109: ret float %ldexpf1
# | next:328'0 ~~~~~~~~~~~~~~~~~~~~
# | 110: }
# | next:328'0 ~~
# | 111:
# | next:328'0 ~
# | 112: define float @libcall_powf_sitofp_f32_const_base_2__flags(i32 %x) {
# | next:328'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:345'0 X error: no match found
# | next:345'1 with "X" equal to "%x"
# | 113: %ldexpf1 = tail call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | next:345'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:345'2 ? possible intended match
# | 114: ret float %ldexpf1
# | next:345'0 ~~~~~~~~~~~~~~~~~~~~
# | 115: }
# | next:345'0 ~~
# | 116:
# | next:345'0 ~
# | 117: define float @readnone_libcall_powf_sitofp_f32_const_base_2(i32 %x) {
# | next:345'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 118: %exp2 = tail call float @llvm.ldexp.f32.i32(float 1.000000e+00, i32 %x)
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/InstCombine/simplify-libcalls-i16.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls-i16.ll -mtriple=unknown -passes=instcombine | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=CHECK,CHECK32 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls-i16.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -mtriple=unknown -passes=instcombine
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=CHECK,CHECK32 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls-i16.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls-i16.ll:274:17: error: CHECK32-NEXT: expected string not found in input
# | ; CHECK32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:139:27: note: scanning from here
# | define double @fake_ldexp(i32 %x) {
# | ^
# | <stdin>:140:8: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls-i16.ll:291:17: error: CHECK32-NEXT: expected string not found in input
# | ; CHECK32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:145:25: note: scanning from here
# | %1 = sext i16 %x to i32
# | ^
# | <stdin>:145:25: note: with "TMP1" equal to "%1"
# | %1 = sext i16 %x to i32
# | ^
# | <stdin>:146:10: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls-i16.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 134: define double @fake_exp2(double %x) {
# | 135: %exp2 = call double @exp2(double %x)
# | 136: ret double %exp2
# | 137: }
# | 138:
# | 139: define double @fake_ldexp(i32 %x) {
# | next:274'0 X~~~~~~~~~ error: no match found
# | 140: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | next:274'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:274'1 ? possible intended match
# | 141: ret double %ldexp1
# | next:274'0 ~~~~~~~~~~~~~~~~~~~~
# | 142: }
# | next:274'0 ~~
# | 143:
# | next:274'0 ~
# | 144: define double @fake_ldexp_16(i16 %x) {
# | next:274'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 145: %1 = sext i16 %x to i32
# | next:291'0 X error: no match found
# | next:291'1 with "TMP1" equal to "%1"
# | 146: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | next:291'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:291'2 ? possible intended match
# | 147: ret double %ldexp1
# | next:291'0 ~~~~~~~~~~~~~~~~~~~~
# | 148: }
# | next:291'0 ~~
# | 149:
# | next:291'0 ~
# | 150: declare i16 @snprintf(ptr, double, ptr)
# | next:291'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 151:
# | next:291'0 ~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/InstCombine/simplify-libcalls.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls.ll -mtriple=unknown -passes=instcombine | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=CHECK,CHECK32 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -mtriple=unknown -passes=instcombine
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=CHECK,CHECK32 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls.ll:285:17: error: CHECK32-NEXT: expected string not found in input
# | ; CHECK32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[X:%.*]])
# | ^
# | <stdin>:133:27: note: scanning from here
# | define double @fake_ldexp(i32 %x) {
# | ^
# | <stdin>:134:8: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls.ll:302:17: error: CHECK32-NEXT: expected string not found in input
# | ; CHECK32-NEXT: [[LDEXP:%.*]] = call double @ldexp(double 1.000000e+00, i32 [[TMP1]])
# | ^
# | <stdin>:139:25: note: scanning from here
# | %1 = sext i16 %x to i32
# | ^
# | <stdin>:139:25: note: with "TMP1" equal to "%1"
# | %1 = sext i16 %x to i32
# | ^
# | <stdin>:140:10: note: possible intended match here
# | %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/InstCombine/simplify-libcalls.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 128: define double @fake_exp2(double %x) {
# | 129: %exp2 = call double @exp2(double %x)
# | 130: ret double %exp2
# | 131: }
# | 132:
# | 133: define double @fake_ldexp(i32 %x) {
# | next:285'0 X~~~~~~~~~ error: no match found
# | 134: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %x)
# | next:285'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:285'1 ? possible intended match
# | 135: ret double %ldexp1
# | next:285'0 ~~~~~~~~~~~~~~~~~~~~
# | 136: }
# | next:285'0 ~~
# | 137:
# | next:285'0 ~
# | 138: define double @fake_ldexp_16(i16 %x) {
# | next:285'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 139: %1 = sext i16 %x to i32
# | next:302'0 X error: no match found
# | next:302'1 with "TMP1" equal to "%1"
# | 140: %ldexp1 = call double @llvm.ldexp.f64.i32(double 1.000000e+00, i32 %1)
# | next:302'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:302'2 ? possible intended match
# | 141: ret double %ldexp1
# | next:302'0 ~~~~~~~~~~~~~~~~~~~~
# | 142: }
# | next:302'0 ~~
# | 143:
# | next:302'0 ~
# | 144: declare i32 @snprintf(ptr, double, ptr)
# | next:302'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 145:
# | next:302'0 ~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.
https://github.com/llvm/llvm-project/pull/169893
More information about the llvm-commits
mailing list