1 /* { dg-lto-do link } */
2 /* { dg-lto-options { { -O3 -flto } } } */
4 typedef unsigned int UINT32
;
5 typedef unsigned long long UINT64
;
6 typedef struct { UINT64 w
[2]; } UINT128
;
7 void _bid_to_dpd128 (UINT128
*, UINT128
*);
8 static const int short_recip_scale
[] = {
29 void _bid_to_dpd128 (UINT128
*, UINT128
*);
32 _bid_to_dpd128 (UINT128
*pres
, UINT128
*px
) {
41 comb
= (x
.w
[1] ) >> 46;
42 if ((comb
& 0x1e000) == 0x1e000) {
45 bcoeff
.w
[1] = (x
.w
[1] & 0x0001ffffffffffffull
);
48 BH
.w
[0] = (BH
.w
[0] >> amount
) | (BH
.w
[1] << (64 - amount
));
49 BL
= bcoeff
.w
[0] - BH
.w
[0] * 1000000000000000000ull;
50 d109
= 0x3333333333333334ull
;
51 { UINT64 CXH
, CXL
, CYH
,CYL
,PL
,PH
,PM
,PM2
; CXH
= (BH
.w
[0]) >> 32; CXL
= (UINT32
)(BH
.w
[0]); CYH
= (d109
) >> 32; CYL
= (UINT32
)(d109
); PM
= CXH
*CYL
; PH
= CXH
*CYH
; PL
= CXL
*CYL
; PM2
= CXL
*CYH
; PH
+= (PM
>>32); PM
= (UINT64
)((UINT32
)PM
)+PM2
+(PL
>>32); };
52 { UINT64 CXH
, CXL
, CYH
,CYL
,PL
,PH
,PM
,PM2
; CXH
= (BL
) >> 32; CXL
= (UINT32
)(BL
); CYH
= (d109
) >> 32; CYL
= (UINT32
)(d109
); PM
= CXH
*CYL
; PH
= CXH
*CYH
; PL
= CXL
*CYL
; PM2
= CXL
*CYH
; PH
+= (PM
>>32); PM
= (UINT64
)((UINT32
)PM
)+PM2
+(PL
>>32); };
57 int main() { return 0; }