This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Thu, Dec 21, 2017 at 01:03:26PM -0600, Segher Boessenkool wrote: > On Thu, Dec 21, 2017 at 06:16:16PM +0000, Joseph Myers wrote: > > On Fri, 17 Nov 2017, Michael Meissner wrote: > > The architecture-independent changes are OK. However, I have a comment on > > the target parts: > > > > > +(define_insn "round<mode>2" > > > + [(set (match_operand:IEEE128 0 "altivec_register_operand" "=v") > > > + (unspec:IEEE128 > > > + [(match_operand:IEEE128 1 "altivec_register_operand" "v")] > > > + UNSPEC_FRIN))] > > > + "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)" > > > + "xsrqpi 0,%0,%1,3" > > > + [(set_attr "type" "vecfloat") > > > + (set_attr "size" "128")]) > > > > My reading of Power ISA 3.0B documentation is that 0,%0,%1,3 means round > > in the mode specified by FPSCR and you need 0,%0,%1,0 for > > round-to-nearest-away semantics which are what the round<mode>2 > > instruction has (i.e., what you've written here is actually correct for > > nearbyint<mode>2, and would be rint<mode>2 if xsrqpix were used instead). > > Ah yes, the roundM2 insn is round-away-from-zero, so you are right. > Tricky, from the name I assumed it would be "current rounding mode" :-/ > Not that "frin" would make sense if that were true. > > Thanks! And thanks for all the reviews in general. Here is the corrected rs6000 part of the patch. I added more round tests and I checked it on a power9 prototype machine. Roundf128 now produces the correct answer. Can I check this into the trunk? [gcc] 2017-12-29 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE 128-bit round to integer instructions. (ceil<mode>2): Likewise. (btrunc<mode>2): Likewise. (round<mode>2): Likewise. [gcc/testsuite] 2017-12-29 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/float128-hw2.c: Add tests for ceilf128, floorf128, truncf128, and roundf128. * gcc.target/powerpc/float128-hw5.c: New tests for _Float128 optimizations added in match.pd. * gcc.target/powerpc/float128-hw6.c: Likewise. * gcc.target/powerpc/float128-hw7.c: Likewise. * gcc.target/powerpc/float128-hw8.c: Likewise. * gcc.target/powerpc/float128-hw9.c: Likewise. * gcc.target/powerpc/float128-hw10.c: Likewise. * gcc.target/powerpc/float128-hw11.c: Likewise. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797
Attachment:
ieee128-patch71b
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |