Re: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
On Thu, 4 Apr 2013, Ramana Radhakrishnan wrote: > On 04/04/13 08:46, Richard Biener wrote: > > On Wed, 3 Apr 2013, Matthew Gretton-Dann wrote: > > > > > Would it be possible for this patch and the others Kyrylo has recently > > > done > > > for the new ARMv8 AArch32 instructions to be backported to 4.8? > > > > > > In particular I'm refering to: > > > > > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00994.html (trunk r197052) > > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html (trunk r197051) > > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00873.html (trunk r197046) > > > > > > > Those seem to be new features and not regression fixes and thus are > > not appropriate for a release branch. > > Not all of them really, > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00652.html is really a target bug > fix which causes mild annoyance once a while. I do believe that Kyryll was > looking at proposing a backport of this patch (and there is a bugzilla entry > for this one.) > > I am sympathetic to the new atomics for v8-a and I've heard atleast one > request for it privately (i.e. this one > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html) but I'd defer to the > RM's on that one. Please ask more specifically then. Note that release managers generally defer to target maintainers for architecture specific patches. But we of course expect them to follow the rule of fixing regressions and wrong-code issues only. Exceptions are always possible but strongly discouraged by us for primary and secondary targets where new regressions may block a release. Richard.
Re: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
On 04/04/13 08:46, Richard Biener wrote: On Wed, 3 Apr 2013, Matthew Gretton-Dann wrote: Would it be possible for this patch and the others Kyrylo has recently done for the new ARMv8 AArch32 instructions to be backported to 4.8? In particular I'm refering to: http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00994.html (trunk r197052) http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html (trunk r197051) http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00873.html (trunk r197046) Those seem to be new features and not regression fixes and thus are not appropriate for a release branch. Not all of them really, http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00652.html is really a target bug fix which causes mild annoyance once a while. I do believe that Kyryll was looking at proposing a backport of this patch (and there is a bugzilla entry for this one.) I am sympathetic to the new atomics for v8-a and I've heard atleast one request for it privately (i.e. this one http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html) but I'd defer to the RM's on that one. regards Ramana
RE: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
> -Original Message- > From: Richard Biener [mailto:rguent...@suse.de] > Sent: 04 April 2013 08:46 > To: Matthew Gretton-Dann > Cc: gcc-patches@gcc.gnu.org; Kyrylo Tkachov; Ramana Radhakrishnan; > Richard Earnshaw > Subject: Re: [PATCH][ARM] use vsel instruction for floating point > conditional moves in ARMv8 > > On Wed, 3 Apr 2013, Matthew Gretton-Dann wrote: > > > Would it be possible for this patch and the others Kyrylo has > recently done > > for the new ARMv8 AArch32 instructions to be backported to 4.8? > > > > In particular I'm refering to: > > > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00994.html (trunk > r197052) > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html (trunk > r197051) > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00873.html (trunk > r197046) > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00652.html (trunk > r197040 and > > 197041) > > Those seem to be new features and not regression fixes and thus are > not appropriate for a release branch. The last one: http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00652.html is actually a bug fix for an ICE with vcond that can be triggered in 4.8, 4.7 and 4.6 (PR 56720) so could be worth backporting. Thanks, Kyrill > > Richard. > > > Thanks, > > > > Matt > > > > > > On 25/03/13 15:21, Kyrylo Tkachov wrote: > > > > -Original Message----- > > > > From: Ramana Radhakrishnan > > > > Sent: 18 February 2013 11:51 > > > > To: Kyrylo Tkachov > > > > Cc: gcc-patches@gcc.gnu.org; Richard Earnshaw > > > > Subject: Re: [PATCH][ARM] use vsel instruction for floating point > > > > conditional moves in ARMv8 > > > > > > > > On 01/30/13 09:24, Kyrylo Tkachov wrote: > > > > > Hi all, > > > > > This patch uses the new ARMv8 AArch32 vsel instruction to > implement > > > > > conditional moves of floating point numbers. > > > > > For example, an instruction of the form: > > > > > vsel.f32 s0, s1, s2 > > > > > means > > > > > s0 := cond ? s1 : s2 > > > > > > > > > > This can be useful, among other places, in Thumb2 because it > doesn't > > > > require > > > > > an enclosing IT block. > > > > > A small catch: The condition code used in vsel can only be one > of > > > > {GE, GT, > > > > > EQ, VS}. If we want to use their negations {LT, LE, NE, VC} we > just > > > > flip the > > > > > source operands. > > > > > A new predicate is introduced that checks that the comparison > yields > > > > an ARM > > > > > condition code in the set {GE, GT, EQ, VS, LT, LE, NE, VC}. > > > > > > > > > > New compilation tests are added. They pass on a model and no > new > > > > regressions > > > > > on arm-none-eabi with qemu. > > > > > > > > > > > > > > Ok for trunk? > > > > > > > > Ok for stage1 4.9. > > > > > > Hi Ramana, > > > > > > Thanks for the review. > > > Re-tested on arm-none-eabi against current trunk and applied as > r197052. > > > > > > > > > > > Ramana > > > > > > Thanks, > > > Kyrill > > > > > > > > > > > > > > Thanks, > > > > > Kyrill > > > > > > > > > > gcc/ChangeLog > > > > > > > > > > 2013-01-30 Kyrylo Tkachov > > > > > > > > > > * config/arm/arm.md (f_sels, f_seld): New types. > > > > > (*cmov): New pattern. > > > > > * config/arm/predicates.md (arm_vsel_comparison_operator): > New > > > > > predicate. > > > > > > > > > > > > > > > gcc/testsuite/ChangeLog > > > > > > > > > > 2013-01-30 Kyrylo Tkachov > > > > > > > > > > * gcc.target/arm/vseleqdf.c: New test. > > > > > * gcc.target/arm/vseleqsf.c: Likewise. > > > > > * gcc.target/arm/vselgedf.c: Likewise. > > > > > * gcc.target/arm/vselgesf.c: Likewise. > > > > > * gcc.target/arm/vselgtdf.c: Likewise. > > > > > * gcc.target/arm/vselgtsf.c: Likewise. > > > > > * gcc.target/arm/vselledf.c: Likewise. > > > > > * gcc.target/arm/vsellesf.c: Likewise. > > > > > * gcc.target/arm/vselltdf.c: Likewise. > > > > > * gcc.target/arm/vselltsf.c: Likewise. > > > > > * gcc.target/arm/vselnedf.c: Likewise. > > > > > * gcc.target/arm/vselnesf.c: Likewise. > > > > > * gcc.target/arm/vselvcdf.c: Likewise. > > > > > * gcc.target/arm/vselvcsf.c: Likewise. > > > > > * gcc.target/arm/vselvsdf.c: Likewise. > > > > > * gcc.target/arm/vselvssf.c: Likewise. > > > > > > > > > > > > > > > > > > > > > > > > > -- > Richard Biener > SUSE / SUSE Labs > SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 > GF: Jeff Hawn, Jennifer Guild, Felix Imend
Re: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
On Wed, 3 Apr 2013, Matthew Gretton-Dann wrote: > Would it be possible for this patch and the others Kyrylo has recently done > for the new ARMv8 AArch32 instructions to be backported to 4.8? > > In particular I'm refering to: > > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00994.html (trunk r197052) > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html (trunk r197051) > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00873.html (trunk r197046) > http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00652.html (trunk r197040 and > 197041) Those seem to be new features and not regression fixes and thus are not appropriate for a release branch. Richard. > Thanks, > > Matt > > > On 25/03/13 15:21, Kyrylo Tkachov wrote: > > > -Original Message- > > > From: Ramana Radhakrishnan > > > Sent: 18 February 2013 11:51 > > > To: Kyrylo Tkachov > > > Cc: gcc-patches@gcc.gnu.org; Richard Earnshaw > > > Subject: Re: [PATCH][ARM] use vsel instruction for floating point > > > conditional moves in ARMv8 > > > > > > On 01/30/13 09:24, Kyrylo Tkachov wrote: > > > > Hi all, > > > > This patch uses the new ARMv8 AArch32 vsel instruction to implement > > > > conditional moves of floating point numbers. > > > > For example, an instruction of the form: > > > > vsel.f32 s0, s1, s2 > > > > means > > > > s0 := cond ? s1 : s2 > > > > > > > > This can be useful, among other places, in Thumb2 because it doesn't > > > require > > > > an enclosing IT block. > > > > A small catch: The condition code used in vsel can only be one of > > > {GE, GT, > > > > EQ, VS}. If we want to use their negations {LT, LE, NE, VC} we just > > > flip the > > > > source operands. > > > > A new predicate is introduced that checks that the comparison yields > > > an ARM > > > > condition code in the set {GE, GT, EQ, VS, LT, LE, NE, VC}. > > > > > > > > New compilation tests are added. They pass on a model and no new > > > regressions > > > > on arm-none-eabi with qemu. > > > > > > > > > > > Ok for trunk? > > > > > > Ok for stage1 4.9. > > > > Hi Ramana, > > > > Thanks for the review. > > Re-tested on arm-none-eabi against current trunk and applied as r197052. > > > > > > > > Ramana > > > > Thanks, > > Kyrill > > > > > > > > > > > Thanks, > > > > Kyrill > > > > > > > > gcc/ChangeLog > > > > > > > > 2013-01-30 Kyrylo Tkachov > > > > > > > > * config/arm/arm.md (f_sels, f_seld): New types. > > > > (*cmov): New pattern. > > > > * config/arm/predicates.md (arm_vsel_comparison_operator): New > > > > predicate. > > > > > > > > > > > > gcc/testsuite/ChangeLog > > > > > > > > 2013-01-30 Kyrylo Tkachov > > > > > > > > * gcc.target/arm/vseleqdf.c: New test. > > > > * gcc.target/arm/vseleqsf.c: Likewise. > > > > * gcc.target/arm/vselgedf.c: Likewise. > > > > * gcc.target/arm/vselgesf.c: Likewise. > > > > * gcc.target/arm/vselgtdf.c: Likewise. > > > > * gcc.target/arm/vselgtsf.c: Likewise. > > > > * gcc.target/arm/vselledf.c: Likewise. > > > > * gcc.target/arm/vsellesf.c: Likewise. > > > > * gcc.target/arm/vselltdf.c: Likewise. > > > > * gcc.target/arm/vselltsf.c: Likewise. > > > > * gcc.target/arm/vselnedf.c: Likewise. > > > > * gcc.target/arm/vselnesf.c: Likewise. > > > > * gcc.target/arm/vselvcdf.c: Likewise. > > > > * gcc.target/arm/vselvcsf.c: Likewise. > > > > * gcc.target/arm/vselvsdf.c: Likewise. > > > > * gcc.target/arm/vselvssf.c: Likewise. > > > > > > > > > > > > > > > -- Richard Biener SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend
Re: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
Would it be possible for this patch and the others Kyrylo has recently done for the new ARMv8 AArch32 instructions to be backported to 4.8? In particular I'm refering to: http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00994.html (trunk r197052) http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00874.html (trunk r197051) http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00873.html (trunk r197046) http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00652.html (trunk r197040 and 197041) Thanks, Matt On 25/03/13 15:21, Kyrylo Tkachov wrote: -Original Message- From: Ramana Radhakrishnan Sent: 18 February 2013 11:51 To: Kyrylo Tkachov Cc: gcc-patches@gcc.gnu.org; Richard Earnshaw Subject: Re: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8 On 01/30/13 09:24, Kyrylo Tkachov wrote: Hi all, This patch uses the new ARMv8 AArch32 vsel instruction to implement conditional moves of floating point numbers. For example, an instruction of the form: vsel.f32 s0, s1, s2 means s0 := cond ? s1 : s2 This can be useful, among other places, in Thumb2 because it doesn't require an enclosing IT block. A small catch: The condition code used in vsel can only be one of {GE, GT, EQ, VS}. If we want to use their negations {LT, LE, NE, VC} we just flip the source operands. A new predicate is introduced that checks that the comparison yields an ARM condition code in the set {GE, GT, EQ, VS, LT, LE, NE, VC}. New compilation tests are added. They pass on a model and no new regressions on arm-none-eabi with qemu. Ok for trunk? Ok for stage1 4.9. Hi Ramana, Thanks for the review. Re-tested on arm-none-eabi against current trunk and applied as r197052. Ramana Thanks, Kyrill Thanks, Kyrill gcc/ChangeLog 2013-01-30 Kyrylo Tkachov * config/arm/arm.md (f_sels, f_seld): New types. (*cmov): New pattern. * config/arm/predicates.md (arm_vsel_comparison_operator): New predicate. gcc/testsuite/ChangeLog 2013-01-30 Kyrylo Tkachov * gcc.target/arm/vseleqdf.c: New test. * gcc.target/arm/vseleqsf.c: Likewise. * gcc.target/arm/vselgedf.c: Likewise. * gcc.target/arm/vselgesf.c: Likewise. * gcc.target/arm/vselgtdf.c: Likewise. * gcc.target/arm/vselgtsf.c: Likewise. * gcc.target/arm/vselledf.c: Likewise. * gcc.target/arm/vsellesf.c: Likewise. * gcc.target/arm/vselltdf.c: Likewise. * gcc.target/arm/vselltsf.c: Likewise. * gcc.target/arm/vselnedf.c: Likewise. * gcc.target/arm/vselnesf.c: Likewise. * gcc.target/arm/vselvcdf.c: Likewise. * gcc.target/arm/vselvcsf.c: Likewise. * gcc.target/arm/vselvsdf.c: Likewise. * gcc.target/arm/vselvssf.c: Likewise. -- Matthew Gretton-Dann Toolchain Working Group, Linaro
RE: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
> -Original Message- > From: Ramana Radhakrishnan > Sent: 18 February 2013 11:51 > To: Kyrylo Tkachov > Cc: gcc-patches@gcc.gnu.org; Richard Earnshaw > Subject: Re: [PATCH][ARM] use vsel instruction for floating point > conditional moves in ARMv8 > > On 01/30/13 09:24, Kyrylo Tkachov wrote: > > Hi all, > > This patch uses the new ARMv8 AArch32 vsel instruction to implement > > conditional moves of floating point numbers. > > For example, an instruction of the form: > > vsel.f32 s0, s1, s2 > > means > > s0 := cond ? s1 : s2 > > > > This can be useful, among other places, in Thumb2 because it doesn't > require > > an enclosing IT block. > > A small catch: The condition code used in vsel can only be one of > {GE, GT, > > EQ, VS}. If we want to use their negations {LT, LE, NE, VC} we just > flip the > > source operands. > > A new predicate is introduced that checks that the comparison yields > an ARM > > condition code in the set {GE, GT, EQ, VS, LT, LE, NE, VC}. > > > > New compilation tests are added. They pass on a model and no new > regressions > > on arm-none-eabi with qemu. > > > > > Ok for trunk? > > Ok for stage1 4.9. Hi Ramana, Thanks for the review. Re-tested on arm-none-eabi against current trunk and applied as r197052. > > Ramana Thanks, Kyrill > > > > > Thanks, > > Kyrill > > > > gcc/ChangeLog > > > > 2013-01-30 Kyrylo Tkachov > > > > * config/arm/arm.md (f_sels, f_seld): New types. > > (*cmov): New pattern. > > * config/arm/predicates.md (arm_vsel_comparison_operator): New > > predicate. > > > > > > gcc/testsuite/ChangeLog > > > > 2013-01-30 Kyrylo Tkachov > > > > * gcc.target/arm/vseleqdf.c: New test. > > * gcc.target/arm/vseleqsf.c: Likewise. > > * gcc.target/arm/vselgedf.c: Likewise. > > * gcc.target/arm/vselgesf.c: Likewise. > > * gcc.target/arm/vselgtdf.c: Likewise. > > * gcc.target/arm/vselgtsf.c: Likewise. > > * gcc.target/arm/vselledf.c: Likewise. > > * gcc.target/arm/vsellesf.c: Likewise. > > * gcc.target/arm/vselltdf.c: Likewise. > > * gcc.target/arm/vselltsf.c: Likewise. > > * gcc.target/arm/vselnedf.c: Likewise. > > * gcc.target/arm/vselnesf.c: Likewise. > > * gcc.target/arm/vselvcdf.c: Likewise. > > * gcc.target/arm/vselvcsf.c: Likewise. > > * gcc.target/arm/vselvsdf.c: Likewise. > > * gcc.target/arm/vselvssf.c: Likewise. > >
Re: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
On 01/30/13 09:24, Kyrylo Tkachov wrote: Hi all, This patch uses the new ARMv8 AArch32 vsel instruction to implement conditional moves of floating point numbers. For example, an instruction of the form: vsel.f32 s0, s1, s2 means s0 := cond ? s1 : s2 This can be useful, among other places, in Thumb2 because it doesn't require an enclosing IT block. A small catch: The condition code used in vsel can only be one of {GE, GT, EQ, VS}. If we want to use their negations {LT, LE, NE, VC} we just flip the source operands. A new predicate is introduced that checks that the comparison yields an ARM condition code in the set {GE, GT, EQ, VS, LT, LE, NE, VC}. New compilation tests are added. They pass on a model and no new regressions on arm-none-eabi with qemu. Ok for trunk? Ok for stage1 4.9. ramana Thanks, Kyrill gcc/ChangeLog 2013-01-30 Kyrylo Tkachov * config/arm/arm.md (f_sels, f_seld): New types. (*cmov): New pattern. * config/arm/predicates.md (arm_vsel_comparison_operator): New predicate. gcc/testsuite/ChangeLog 2013-01-30 Kyrylo Tkachov * gcc.target/arm/vseleqdf.c: New test. * gcc.target/arm/vseleqsf.c: Likewise. * gcc.target/arm/vselgedf.c: Likewise. * gcc.target/arm/vselgesf.c: Likewise. * gcc.target/arm/vselgtdf.c: Likewise. * gcc.target/arm/vselgtsf.c: Likewise. * gcc.target/arm/vselledf.c: Likewise. * gcc.target/arm/vsellesf.c: Likewise. * gcc.target/arm/vselltdf.c: Likewise. * gcc.target/arm/vselltsf.c: Likewise. * gcc.target/arm/vselnedf.c: Likewise. * gcc.target/arm/vselnesf.c: Likewise. * gcc.target/arm/vselvcdf.c: Likewise. * gcc.target/arm/vselvcsf.c: Likewise. * gcc.target/arm/vselvsdf.c: Likewise. * gcc.target/arm/vselvssf.c: Likewise.
RE: [PATCH][ARM] use vsel instruction for floating point conditional moves in ARMv8
Ping http://gcc.gnu.org/ml/gcc-patches/2013-01/msg01418.html Probably for 4.9 now... Thanks, Kyrill > -Original Message- > From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov > Sent: 30 January 2013 09:25 > To: gcc-patches@gcc.gnu.org > Cc: Ramana Radhakrishnan; Richard Earnshaw > Subject: [PATCH][ARM] use vsel instruction for floating point > conditional moves in ARMv8 > > Hi all, > This patch uses the new ARMv8 AArch32 vsel instruction to implement > conditional moves of floating point numbers. > For example, an instruction of the form: > vsel.f32 s0, s1, s2 > means > s0 := cond ? s1 : s2 > > This can be useful, among other places, in Thumb2 because it doesn't > require > an enclosing IT block. > A small catch: The condition code used in vsel can only be one of {GE, > GT, > EQ, VS}. If we want to use their negations {LT, LE, NE, VC} we just > flip the > source operands. > A new predicate is introduced that checks that the comparison yields an > ARM > condition code in the set {GE, GT, EQ, VS, LT, LE, NE, VC}. > > New compilation tests are added. They pass on a model and no new > regressions > on arm-none-eabi with qemu. > > Ok for trunk? > > Thanks, > Kyrill > > gcc/ChangeLog > > 2013-01-30 Kyrylo Tkachov > > * config/arm/arm.md (f_sels, f_seld): New types. > (*cmov): New pattern. > * config/arm/predicates.md (arm_vsel_comparison_operator): New > predicate. > > > gcc/testsuite/ChangeLog > > 2013-01-30 Kyrylo Tkachov > > * gcc.target/arm/vseleqdf.c: New test. > * gcc.target/arm/vseleqsf.c: Likewise. > * gcc.target/arm/vselgedf.c: Likewise. > * gcc.target/arm/vselgesf.c: Likewise. > * gcc.target/arm/vselgtdf.c: Likewise. > * gcc.target/arm/vselgtsf.c: Likewise. > * gcc.target/arm/vselledf.c: Likewise. > * gcc.target/arm/vsellesf.c: Likewise. > * gcc.target/arm/vselltdf.c: Likewise. > * gcc.target/arm/vselltsf.c: Likewise. > * gcc.target/arm/vselnedf.c: Likewise. > * gcc.target/arm/vselnesf.c: Likewise. > * gcc.target/arm/vselvcdf.c: Likewise. > * gcc.target/arm/vselvcsf.c: Likewise. > * gcc.target/arm/vselvsdf.c: Likewise. > * gcc.target/arm/vselvssf.c: Likewise.