xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/logf128.ll (revision ccb2b79655217587accfa592c575f9b7267308b9)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3
4; REQUIRES: has_logf128
5declare fp128 @llvm.log.f128(fp128)
6declare fp128 @logl(fp128)
7
8define fp128 @log_e_64(){
9; CHECK-LABEL: define fp128 @log_e_64() {
10; CHECK-NEXT:    ret fp128 0xL300000000000000040010A2B23F3BAB7
11;
12  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000004005000000000000)
13  ret fp128 %A
14}
15
16define fp128 @log_e_smallest_positive_subnormal_number(){
17; CHECK-LABEL: define fp128 @log_e_smallest_positive_subnormal_number() {
18; CHECK-NEXT:    ret fp128 0xL3000000000000000C00C654628220780
19;
20  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000010000000000000000)
21  ret fp128 %A
22}
23
24define fp128 @log_e_largest_subnormal_number(){
25; CHECK-LABEL: define fp128 @log_e_largest_subnormal_number() {
26; CHECK-NEXT:    ret fp128 0xLD000000000000000C00C62D918CE2421
27;
28  %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF)
29  ret fp128 %A
30}
31
32define fp128 @log_e_smallest_positive_normal_number(){
33;
34; CHECK-LABEL: define fp128 @log_e_smallest_positive_normal_number() {
35; CHECK-NEXT:    ret fp128 0xLD000000000000000C00C62D918CE2421
36;
37  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000000001000000000000)
38  ret fp128 %A
39}
40
41define fp128 @log_e_largest_normal_number(){
42; CHECK-LABEL: define fp128 @log_e_largest_normal_number() {
43; CHECK-NEXT:    ret fp128 0xLF000000000000000400C62E42FEFA39E
44;
45  %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF7FFEFFFFFFFFFFFF)
46  ret fp128 %A
47}
48
49define fp128 @log_e_largest_number_less_than_one(){
50; CHECK-LABEL: define fp128 @log_e_largest_number_less_than_one() {
51; CHECK-NEXT:    ret fp128 0xL0000000000000000BF8E000000000000
52;
53  %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF3FFEFFFFFFFFFFFF)
54  ret fp128 %A
55}
56
57define fp128 @log_e_1(){
58; CHECK-LABEL: define fp128 @log_e_1() {
59; CHECK-NEXT:    ret fp128 0xL00000000000000000000000000000000
60;
61  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000003FFF000000000000)
62  ret fp128 %A
63}
64
65define fp128 @log_e_smallest_number_larger_than_one(){
66; CHECK-LABEL: define fp128 @log_e_smallest_number_larger_than_one() {
67; CHECK-NEXT:    ret fp128 0xL00000000000000003F8F000000000000
68;
69  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000013FFF000000000000)
70  ret fp128 %A
71}
72
73define fp128 @log_e_negative_2(){
74; CHECK-LABEL: define fp128 @log_e_negative_2() {
75; CHECK-NEXT:    ret fp128 0xL0000000000000000{{[7|F]}}FFF800000000000
76;
77  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL0000000000000000C000000000000000)
78  ret fp128 %A
79}
80
81define fp128 @log_e_0(){
82; CHECK-LABEL: define fp128 @log_e_0() {
83; CHECK-NEXT:    ret fp128 0xL0000000000000000FFFF000000000000
84;
85  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000000000000000000000)
86  ret fp128 %A
87}
88
89define fp128 @log_e_negative_0(){
90; CHECK-LABEL: define fp128 @log_e_negative_0() {
91; CHECK-NEXT:    ret fp128 0xL0000000000000000FFFF000000000000
92;
93  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000008000000000000000)
94  ret fp128 %A
95}
96
97define fp128 @log_e_infinity(){
98; CHECK-LABEL: define fp128 @log_e_infinity() {
99; CHECK-NEXT:    ret fp128 0xL00000000000000007FFF000000000000
100;
101  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000007FFF000000000000)
102  ret fp128 %A
103}
104
105define fp128 @log_e_negative_infinity(){
106; CHECK-LABEL: define fp128 @log_e_negative_infinity() {
107; CHECK-NEXT:    ret fp128 0xL0000000000000000{{[7|F]}}FFF800000000000
108;
109  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL0000000000000000FFFF000000000000)
110  ret fp128 %A
111}
112
113define fp128 @log_e_nan(){
114; CHECK-LABEL: define fp128 @log_e_nan() {
115; CHECK-NEXT:    ret fp128 0xL00000000000000007FFF800000000001
116;
117  %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000007FFF000000000001)
118  ret fp128 %A
119}
120
121define <2 x fp128> @log_e_negative_2_vector(){
122; CHECK-LABEL: define <2 x fp128> @log_e_negative_2_vector() {
123; CHECK-NEXT:    ret <2 x fp128> <fp128 0xL0000000000000000{{[7|F]}}FFF800000000000, fp128 0xL0000000000000000{{[7|F]}}FFF800000000000>
124;
125  %A = call <2 x fp128> @llvm.log.v2f128(<2 x fp128> <fp128 0xL0000000000000000C000000000000000, fp128 0xL0000000000000000C000000000000001>)
126  ret <2 x fp128> %A
127}
128
129define fp128 @logl_e_64(){
130; CHECK-LABEL: define fp128 @logl_e_64() {
131; CHECK-NEXT:    [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000004005000000000000)
132; CHECK-NEXT:    ret fp128 0xL300000000000000040010A2B23F3BAB7
133;
134  %A = call fp128 @logl(fp128 noundef 0xL00000000000000004005000000000000)
135  ret fp128 %A
136}
137
138define fp128 @logl_e_0(){
139; CHECK-LABEL: define fp128 @logl_e_0() {
140; CHECK-NEXT:    [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000000000000000000000)
141; CHECK-NEXT:    ret fp128 [[A]]
142;
143  %A = call fp128 @logl(fp128 noundef 0xL00000000000000000000000000000000)
144  ret fp128 %A
145}
146
147define fp128 @logl_e_infinity(){
148; CHECK-LABEL: define fp128 @logl_e_infinity() {
149; CHECK-NEXT:    [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000000)
150; CHECK-NEXT:    ret fp128 0xL00000000000000007FFF000000000000
151;
152  %A = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000000)
153  ret fp128 %A
154}
155
156define fp128 @logl_e_nan(){
157; CHECK-LABEL: define fp128 @logl_e_nan() {
158; CHECK-NEXT:    [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000001)
159; CHECK-NEXT:    ret fp128 [[A]]
160;
161  %A = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000001)
162  ret fp128 %A
163}
164
165
166define fp128 @logl_e_negative_2(){
167; CHECK-LABEL: define fp128 @logl_e_negative_2() {
168; CHECK-NEXT:    [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL0000000000000000C000000000000000)
169; CHECK-NEXT:    ret fp128 [[A]]
170;
171  %A = call fp128 @logl(fp128 noundef 0xL0000000000000000C000000000000000)
172  ret fp128 %A
173}
174