Page MenuHomePhabricator

[PowerPC] Add the support for __builtin_setrnd()

Authored by ZhangKang on Mar 14 2019, 7:59 PM.



PowerPC64/PowerPC64le supports the builtin function __builtin_setrnd to set the floating point rounding mode. This function will use the least significant two bits of integer argument to set the floating point rounding mode.

double __builtin_setrnd(int mode);

The effective values for mode are:

0 - round to nearest
1 - round to zero
2 - round to +infinity
3 - round to -infinity

Note that the mode argument will modulo 4, so if the int argument is greater than 3, it will only use the least significant two bits of the mode. Namely, builtin_setrnd(102)) is equal to builtin_setrnd(2).

Diff Detail


Event Timeline

ZhangKang created this revision.Mar 14 2019, 7:59 PM
Herald added a project: Restricted Project. · View Herald TranscriptMar 14 2019, 7:59 PM
ZhangKang updated this revision to Diff 190779.Mar 14 2019, 8:33 PM

Add the test file.

jsji accepted this revision.Mar 28 2019, 12:17 PM

LGTM, with some comment change please. Thanks.

1170 ↗(On Diff #190779)

this is set only? remove get in comment.

10996 ↗(On Diff #190779)

Typo? two G8RCRegClass here!

11022 ↗(On Diff #190779)

Load from the stack which SrcReg stored into DestReg => Load from the stack where SrcReg is stored, and save to DestReg

11037 ↗(On Diff #190779)

using the two -> use two

1313 ↗(On Diff #190779)

round mode => rounding mode

This revision is now accepted and ready to land.Mar 28 2019, 12:17 PM
ZhangKang updated this revision to Diff 192766.Mar 28 2019, 7:16 PM

Modify the comments to follow reviewer's comments..

ZhangKang marked 6 inline comments as done.Mar 28 2019, 7:18 PM
ZhangKang added inline comments.
10996 ↗(On Diff #190779)

Yes, it a typo, I have fixed it.

ZhangKang marked an inline comment as done.Mar 28 2019, 7:20 PM
This revision was automatically updated to reflect the committed changes.