1 /* Check that optimizations like (x * 1) to x, or (x * -1) to -x,
2 do not apply to decimal float computations where trailing zeroes
7 #define COMPARE32(A,B) \
10 #define COMPARE64(A,B) \
11 A.i[0] == B.i[0] && A.i[1] == B.i[1]
13 #define COMPARE128(A,B) \
14 A.i[0] == B.i[0] && A.i[1] == B.i[1] && A.i[2] == B.i[2] && A.i[3] == B.i[3]
48 volatile u128 p128_1_0
;
49 volatile u128 p128_2_0
;
51 volatile u128 m128_1_0
;
52 volatile u128 m128_2_0
;
91 /* Multiplying by a value with no trailing zero should not change the
94 a32
.d
= p32_2_0
.d
* p32_1
.d
;
95 if (! (COMPARE32 (a32
, p32_2_0
)))
98 a32
.d
= p32_2_0
.d
* 1.DF
;
99 if (! (COMPARE32 (a32
, p32_2_0
)))
102 a32
.d
= p32_2_0
.d
* m32_1
.d
;
103 if (! (COMPARE32 (a32
, m32_2_0
)))
106 a32
.d
= p32_2_0
.d
* -1.DF
;
107 if (! (COMPARE32 (a32
, m32_2_0
)))
110 /* Multiplying by a value with a trailing zero should change the
113 a32
.d
= p32_2_0
.d
* p32_1_0
.d
;
114 if (COMPARE32 (a32
, p32_2_0
))
117 a32
.d
= p32_2_0
.d
* 1.0DF
;
118 if (COMPARE32 (a32
, p32_2_0
))
121 a32
.d
= p32_2_0
.d
* m32_1_0
.d
;
122 if (COMPARE32 (a32
, m32_2_0
))
125 a32
.d
= p32_2_0
.d
* -1.0DF
;
126 if (COMPARE32 (a32
, m32_2_0
))
133 /* Multiplying by a value with no trailing zero should not change the
136 a64
.d
= p64_2_0
.d
* p64_1
.d
;
137 if (! (COMPARE64 (a64
, p64_2_0
)))
140 a64
.d
= p64_2_0
.d
* 1.DD
;
141 if (! (COMPARE64 (a64
, p64_2_0
)))
144 a64
.d
= p64_2_0
.d
* m64_1
.d
;
145 if (! (COMPARE64 (a64
, m64_2_0
)))
148 a64
.d
= p64_2_0
.d
* -1.DD
;
149 if (! (COMPARE64 (a64
, m64_2_0
)))
152 /* Multiplying by a value with a trailing zero should change the
155 a64
.d
= p64_2_0
.d
* p64_1_0
.d
;
156 if (COMPARE64 (a64
, p64_2_0
))
159 a64
.d
= p64_2_0
.d
* 1.0DD
;
160 if (COMPARE64 (a64
, p64_2_0
))
163 a64
.d
= p64_2_0
.d
* m64_1_0
.d
;
164 if (COMPARE64 (a64
, m64_2_0
))
167 a64
.d
= p64_2_0
.d
* -1.0DD
;
168 if (COMPARE64 (a64
, m64_2_0
))
175 /* Multiplying by a value with no trailing zero should not change the
178 a128
.d
= p128_2_0
.d
* p128_1_0
.d
;
179 if (COMPARE128 (a128
, p128_2_0
))
182 a128
.d
= p128_2_0
.d
* 1.0DL
;
183 if (COMPARE128 (a128
, p128_2_0
))
186 a128
.d
= p128_2_0
.d
* m128_1_0
.d
;
187 if (COMPARE128 (a128
, m128_2_0
))
190 a128
.d
= p128_2_0
.d
* -1.0DL
;
191 if (COMPARE128 (a128
, m128_2_0
))
194 /* Multiplying by a value with a trailing zero should change the
197 a128
.d
= p128_2_0
.d
* p128_1
.d
;
198 if (! (COMPARE128 (a128
, p128_2_0
)))
201 a128
.d
= p128_2_0
.d
* 1.DL
;
202 if (! (COMPARE128 (a128
, p128_2_0
)))
205 a128
.d
= p128_2_0
.d
* m128_1
.d
;
206 if (! (COMPARE128 (a128
, m128_2_0
)))
209 a128
.d
= p128_2_0
.d
* -1.DL
;
210 if (! (COMPARE128 (a128
, m128_2_0
)))