xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/trunc.ll (revision ac696ac4530fb3df626195e94e83649bf7114754)
1486ed885SArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*ac696ac4SBjorn Pettersson; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
3486ed885SArthur Eubanks
4486ed885SArthur Eubanksdeclare float @truncf(float) #0
59d279621SNikita Popovdeclare float @llvm.trunc.f32(float)
6486ed885SArthur Eubanksdeclare double @trunc(double) #0
79d279621SNikita Popovdeclare double @llvm.trunc.f64(double)
8486ed885SArthur Eubanks
9486ed885SArthur Eubanksdefine float @constant_fold_trunc_f32_01() #0 {
10486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f32_01(
11486ed885SArthur Eubanks; CHECK-NEXT:    ret float 1.000000e+00
12486ed885SArthur Eubanks;
13486ed885SArthur Eubanks  %x = call float @truncf(float 1.25) #0
14486ed885SArthur Eubanks  ret float %x
15486ed885SArthur Eubanks}
16486ed885SArthur Eubanks
17486ed885SArthur Eubanksdefine float @constant_fold_trunc_f32_02() #0 {
18486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f32_02(
19486ed885SArthur Eubanks; CHECK-NEXT:    ret float -1.000000e+00
20486ed885SArthur Eubanks;
21486ed885SArthur Eubanks  %x = call float @llvm.trunc.f32(float -1.25) #0
22486ed885SArthur Eubanks  ret float %x
23486ed885SArthur Eubanks}
24486ed885SArthur Eubanks
25486ed885SArthur Eubanksdefine float @constant_fold_trunc_f32_03() #0 {
26486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f32_03(
27486ed885SArthur Eubanks; CHECK-NEXT:    ret float 1.000000e+00
28486ed885SArthur Eubanks;
29486ed885SArthur Eubanks  %x = call float @truncf(float 1.5) #0
30486ed885SArthur Eubanks  ret float %x
31486ed885SArthur Eubanks}
32486ed885SArthur Eubanks
33486ed885SArthur Eubanksdefine float @constant_fold_trunc_f32_04() #0 {
34486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f32_04(
35486ed885SArthur Eubanks; CHECK-NEXT:    ret float -1.000000e+00
36486ed885SArthur Eubanks;
37486ed885SArthur Eubanks  %x = call float @llvm.trunc.f32(float -1.5) #0
38486ed885SArthur Eubanks  ret float %x
39486ed885SArthur Eubanks}
40486ed885SArthur Eubanks
41486ed885SArthur Eubanksdefine float @constant_fold_trunc_f32_05() #0 {
42486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f32_05(
43486ed885SArthur Eubanks; CHECK-NEXT:    ret float 2.000000e+00
44486ed885SArthur Eubanks;
45486ed885SArthur Eubanks  %x = call float @truncf(float 2.75) #0
46486ed885SArthur Eubanks  ret float %x
47486ed885SArthur Eubanks}
48486ed885SArthur Eubanks
49486ed885SArthur Eubanksdefine float @constant_fold_trunc_f32_06() #0 {
50486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f32_06(
51486ed885SArthur Eubanks; CHECK-NEXT:    ret float -2.000000e+00
52486ed885SArthur Eubanks;
53486ed885SArthur Eubanks  %x = call float @llvm.trunc.f32(float -2.75) #0
54486ed885SArthur Eubanks  ret float %x
55486ed885SArthur Eubanks}
56486ed885SArthur Eubanks
57486ed885SArthur Eubanksdefine double @constant_fold_trunc_f64_01() #0 {
58486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f64_01(
59486ed885SArthur Eubanks; CHECK-NEXT:    ret double 1.000000e+00
60486ed885SArthur Eubanks;
61486ed885SArthur Eubanks  %x = call double @trunc(double 1.3) #0
62486ed885SArthur Eubanks  ret double %x
63486ed885SArthur Eubanks}
64486ed885SArthur Eubanks
65486ed885SArthur Eubanksdefine double @constant_fold_trunc_f64_02() #0 {
66486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f64_02(
67486ed885SArthur Eubanks; CHECK-NEXT:    ret double -1.000000e+00
68486ed885SArthur Eubanks;
69486ed885SArthur Eubanks  %x = call double @llvm.trunc.f64(double -1.3) #0
70486ed885SArthur Eubanks  ret double %x
71486ed885SArthur Eubanks}
72486ed885SArthur Eubanks
73486ed885SArthur Eubanksdefine double @constant_fold_trunc_f64_03() #0 {
74486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f64_03(
75486ed885SArthur Eubanks; CHECK-NEXT:    ret double 1.000000e+00
76486ed885SArthur Eubanks;
77486ed885SArthur Eubanks  %x = call double @trunc(double 1.5) #0
78486ed885SArthur Eubanks  ret double %x
79486ed885SArthur Eubanks}
80486ed885SArthur Eubanks
81486ed885SArthur Eubanksdefine double @constant_fold_trunc_f64_04() #0 {
82486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f64_04(
83486ed885SArthur Eubanks; CHECK-NEXT:    ret double -1.000000e+00
84486ed885SArthur Eubanks;
85486ed885SArthur Eubanks  %x = call double @llvm.trunc.f64(double -1.5) #0
86486ed885SArthur Eubanks  ret double %x
87486ed885SArthur Eubanks}
88486ed885SArthur Eubanks
89486ed885SArthur Eubanksdefine double @constant_fold_trunc_f64_05() #0 {
90486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f64_05(
91486ed885SArthur Eubanks; CHECK-NEXT:    ret double 2.000000e+00
92486ed885SArthur Eubanks;
93486ed885SArthur Eubanks  %x = call double @trunc(double 2.7) #0
94486ed885SArthur Eubanks  ret double %x
95486ed885SArthur Eubanks}
96486ed885SArthur Eubanks
97486ed885SArthur Eubanksdefine double @constant_fold_trunc_f64_06() #0 {
98486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_trunc_f64_06(
99486ed885SArthur Eubanks; CHECK-NEXT:    ret double -2.000000e+00
100486ed885SArthur Eubanks;
101486ed885SArthur Eubanks  %x = call double @llvm.trunc.f64(double -2.7) #0
102486ed885SArthur Eubanks  ret double %x
103486ed885SArthur Eubanks}
104486ed885SArthur Eubanks
1059d279621SNikita Popovattributes #0 = { nounwind readnone willreturn }
106