Re: [RFC/PATCH 00/11] Fix up some unexpected empty split conditions

2021-06-03 Thread Segher Boessenkool
amp; 1" looks > weird/inconsistent. In most ports "&& 1" is all over the place and well-known already. Sure we could change to "" meaning always, but that is not what it currently means! If we could just start all over we could do it perfectly (but see second-system syndrome, heh). But we cannot. IMO we should especially avoid everything that uses new semantics for old syntax. Segher

Re: [RFC/PATCH 00/11] Fix up some unexpected empty split conditions

2021-06-03 Thread Segher Boessenkool
On Thu, Jun 03, 2021 at 11:11:53AM -0600, Jeff Law wrote: > On 6/3/2021 2:00 AM, Segher Boessenkool wrote: > >The whole point of requiring the split condition to start with && is so > >it will become harder to mess things up (it will make the gen* code a > >tiny litt

Re: [PATCH] rtl: constm64_rtx..const64_rtx

2021-06-03 Thread Segher Boessenkool
On Thu, Jun 03, 2021 at 01:32:54PM -0600, Jeff Law wrote: > On 6/2/2021 4:43 PM, Segher Boessenkool wrote: > >We have has const0_rtx etc. since forever, this patch just increases the > >range (to those values that have had guaranteed unique RTXes since > >decades as well).

Re: [PATCH 01/11] gen: Emit error msg for empty split condition

2021-06-04 Thread Segher Boessenkool
out > the word instead. This is a message for GCC developers, and it is not translated. Segher

Re: [PATCH 2/5 ver4] RS6000: Add 128-bit Integer Operations

2021-06-04 Thread Segher Boessenkool
P10_BUILTIN_VCMPGTUT, > > P10_BUILTIN_VCMPGTST, P10_BUILTIN_CMPLE_1TI, > > P10_BUILTIN_CMPLE_U1TI]: New case statements. > > No signs of P10_BUILTIN_CMPNET below. possibly P10V_BUILTIN_CMPNET? > S > ame through at least P10_BUILTIN_CMPLE_U1TI. It is P10V_BUILTIN_CMPNET (note the V). Segher

Re: [PATCH 2/5 ver4] RS6000: Add 128-bit Integer Operations

2021-06-04 Thread Segher Boessenkool
ap upper/lower 64-bit values in a 128-bit vector > +(define_insn "xxswapd_v1ti" > + [(set (match_operand:V1TI 0 "vsx_register_operand" "=v") > + (subreg:V1TI > + (vec_select:V2DI > + (subreg:V2DI > +(match_operand:V1TI 1 "vsx_register_operand" "v") 0 ) > + (parallel [(const_int 1)(const_int 0)])) > + 0))] There are spaces instead of tabs on most of these lines. Okay for trunk with the trivialities fixed. Also okay for GCC 11 once it has been tested on all CPUs and OSes (all we care about that it :-) ) Thanks! Segher

Re: [PATCH 3/5 ver4] RS6000: Add TI to TD (128-bit DFP) and TD to TI support

2021-06-04 Thread Segher Boessenkool
; * config/rs6000/dfp.md (floattitd2, fixtdti2): New define_insns. > * config/rs6000/rs6000-call.c (P10V_BUILTIN_VCMPNET_P, > P10V_BUILTIN_VCMPAET_P): New overloaded definitions. That last line is just spurious? Okay for trunk. Thanks! Segher

Re: [PATCH 4/5 ver4] RS6000, Add test 128-bit shifts for just the int128 type.

2021-06-04 Thread Segher Boessenkool
dated. Okay for trunk. Thanks! Segher

Re: [PATCH 5/5 ver4] RS6000: Conversions between 128-bit integer and floating point values.

2021-06-07 Thread Segher Boessenkool
mes, or if it is just to make it clearer, or maybe something else? Some words here would have helped :-) Okay for trunk. Thanks! Segher

Re: [PATCH ] RS6000 Add 128-bit Binary Integer sign extend operations

2021-06-07 Thread Segher Boessenkool
define_insn you have, you can write just { if (BYTES_BIG_ENDIAN) { ... DONE; } } This is the normal way of writing it. When a define_expand does not call DONE or FAIL, the pattern is inserted in the insn stream. Okay for trunk with the indents fixed, and maybe the expand thing. Also okay for GCC 11 if it survived testing on all targets and OSes. That goes for all patches in this series btw. Thanks! Segher

Re: [PATCH 1/2] Add IEEE 128-bit min/max support on PowerPC.

2021-06-07 Thread Segher Boessenkool
power9-vector to > add the necessary support. You should simply not run this test on too new systems. You can use dg-skip-if or similar. > 3) Test code targetting at least power8 but go to power9 at the maximum. But why? We will keep testing all interesting CPU / OS combos as long as they are interesting. Segher

Re: [PATCH 1/2] Add IEEE 128-bit min/max support on PowerPC.

2021-06-07 Thread Segher Boessenkool
eah, don't. Add a dg-skip-if if that is what you want. That -mpower9-vector shouldn't be there either. Segher

Re: [PATCH 2/2] Add IEEE 128-bit fp conditional move on PowerPC.

2021-06-07 Thread Segher Boessenkool
rst*, and then not have an "else". *That* is simpler. And just write !(...) around the condition, don't try to manually invert it please. You want both correct code and readable code, not neither of these, they are not extremes you need to balance, each helps the other! Segher

[PATCH] rtl: Join the insn and split conditions in define_insn_and_split

2021-06-07 Thread Segher Boessenkool
Is this okay for trunk? Segher 2021-06-07 Segher Boessenkool * gensupport.c (process_rtx) [DEFINE_INSN_AND_SPLIT]: Always include the insn condition in the split condition. --- gcc/gensupport.c | 25 - 1 file changed, 16 insertions(+), 9 deletion

Re: [PATCH 2/2] Add IEEE 128-bit fp conditional move on PowerPC.

2021-06-07 Thread Segher Boessenkool
uot;gpc_reg_operand")))] > + "TARGET_POWER10 && TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" > +{ > + if (rs6000_emit_cmove (operands[0], operands[1], operands[2], operands[3])) > +DONE; > + else > +FAIL; > +}) Why is this a special pattern anyway? Why can you not do d = cond ? x : y; with cond any comparison, not even including any floating point possibly? Segher

Re: [PATCH, rs6000] Update Power10 scheduling description for fused instruction types

2021-06-07 Thread Segher Boessenkool
On Mon, Jun 07, 2021 at 03:41:29PM -0500, Pat Haugen wrote: > Update Power10 scheduling description for new fused instruction types. Okay for trunk. Thanks! Segher

Re: [RFC/PATCH 00/11] Fix up some unexpected empty split conditions

2021-06-07 Thread Segher Boessenkool
t will need any significant fixing, maybe none at all will be needed across all targets. And no changes will be needed anywhere immediately. We could make leading "&&" deprecated, and the same for split condition "1" (which was "&& 1"). This is easy to change automatically as well. Segher

Re: [PATCH] rtl: Join the insn and split conditions in define_insn_and_split

2021-06-08 Thread Segher Boessenkool
On Tue, Jun 08, 2021 at 09:05:57AM +0200, Richard Biener wrote: > On Tue, Jun 8, 2021 at 12:05 AM Segher Boessenkool > wrote: > > > > In theory we could have a split condition not inclusive of the insn > > condition in the past. That never was a good idea, the code do

Re: [RFC/PATCH 00/11] Fix up some unexpected empty split conditions

2021-06-08 Thread Segher Boessenkool
On Tue, Jun 08, 2021 at 09:08:56AM +0200, Richard Biener wrote: > On Tue, Jun 8, 2021 at 4:10 AM Kewen.Lin via Gcc-patches > wrote: > > on 2021/6/8 上午7:50, Segher Boessenkool wrote: > > > On Fri, Jun 04, 2021 at 10:57:51AM +0800, Kewen.Lin via Gcc-patches wrote: > >

Re: [PATCH] rtl: Join the insn and split conditions in define_insn_and_split

2021-06-08 Thread Segher Boessenkool
> they won't regress again. Just some target macro might be better / easier? Just gensupport.c will need to use it. Will we still allow empty split conditions? And automatically make that do the equivalent of "&& 1"? Segher

Re: [PATCH] rtl: Join the insn and split conditions in define_insn_and_split

2021-06-08 Thread Segher Boessenkool
On Tue, Jun 08, 2021 at 04:50:56PM +0100, Richard Sandiford wrote: > Segher Boessenkool writes: > > On Tue, Jun 08, 2021 at 02:48:11PM +0200, Richard Biener wrote: > >> > So yeah, patch withdrawn. This on one hand is proof we do want to make > >> > such a chang

Re: [PATCH] rs6000: Support doubleword swaps removal in rot64 load store [PR100085]

2021-06-08 Thread Segher Boessenkool
red* alternative with cost 12, while the other alternative has cost 8. Why is that? That looks like a bug. (set_attr "length" "12,8") > >> By hacking the vsx_le_perm_store_v1ti INSN_COST from 12 to 8, > > > > It should be the same cost as the other store! > > vsx_le_permute_v1ti's cost is defined to 4 in vsx.md: Yes. Why is alternative 0 of *vsx_le_perm_store_ said to have a length of 3 insns? Segher

Re: [PATCH v2] rs6000: Support doubleword swaps removal in rot64 load store [PR100085]

2021-06-08 Thread Segher Boessenkool
(which implicitly sets this). So just remove that dg-require please. > +/* { dg-final { scan-assembler-not "xxpermdi" } } */ > +/* { dg-final { scan-assembler-not "stxvd2x" } } */ > +/* { dg-final { scan-assembler-not "lxvd2x" } } */ It is a good habit to use \m and \M in the scans where you can (those are the same as \< and \> are in some other regexp dialects). They aren't absolutely necessary here of course. Okay for trunk with those fixes. Thanks! Segher

Re: [PATCH] rs6000: Remove unspecs for vec_mrghl[bhw]

2021-06-08 Thread Segher Boessenkool
s "vmrgow" 8 } } */ > -/* { dg-final { scan-assembler-times "vmrglb" 5 { target le } } } */ > +/* { dg-final { scan-assembler-times "vmrglb" 4 { target le } } } */ > /* { dg-final { scan-assembler-times "vmrglb" 6 { target be } } } */ > /* { dg-final { scan-assembler-times "vmrgew" 8 } } */ > /* { dg-final { scan-assembler-times "vsplth" 8 } } */ Are those changes correct? It looks like a vmrglb became a vmrghb, and that 4 each of xxmrghw and xxmrglw disappeared? Both seem wrong? Segher

Re: [PATCH] rs6000: Remove unspecs for vec_mrghl[bhw]

2021-06-09 Thread Segher Boessenkool
# 35 [c=4 l=4] xxswapd_v4sf > > Note that v0 and v12 is swapped in lxvd2x, these new 3 instructions > produces same result than before. And there was one xxmrglw in this snippet before, and now there still is only one. But, the testcase uses -dp, I see. Please use \m and \M in the scans, it helps :-) (And convert more than just the few that hit errors ;-) ) (You may want to do that as a separate patch before this one, to make counting easier (also for me ;-) ), (I'll review the new patch later today). Segher

Re: [PATCH,rs6000] Fix p10 fusion test cases for -m32

2021-06-09 Thread Segher Boessenkool
ctually make sense? It seems too be two themes: long long being two regs / two insns on 32-bit, and the you get cmpld etc. only on 64-bit? Okay for trunk if this is actually the expected output. Thanks! Segher

Re: [PATCH] rs6000: Support doubleword swaps removal in rot64 load store [PR100085]

2021-06-09 Thread Segher Boessenkool
On Wed, Jun 09, 2021 at 11:20:20AM +0800, Xionghu Luo wrote: > On 2021/6/9 04:11, Segher Boessenkool wrote: > > On Fri, Jun 04, 2021 at 09:40:58AM +0800, Xionghu Luo wrote: > >>>> rejecting combination of insns 6 and 7 > >>>> original costs 4 + 4 = 8 > &g

Re: [PATCH v2] rs6000: Support doubleword swaps removal in rot64 load store [PR100085]

2021-06-09 Thread Segher Boessenkool
On Wed, Jun 09, 2021 at 11:06:31AM +0800, Xionghu Luo wrote: > On 2021/6/9 05:07, Segher Boessenkool wrote: > >> -/* { dg-final { scan-assembler "lxvd2x 34" } } */ > >> -/* { dg-final { scan-assembler "stxvd2x 34" } } */ > >> +/* { dg-final {

Re: [PATCH/RFC] combine: Tweak the condition of last_set invalidation

2021-06-09 Thread Segher Boessenkool
Mark registers that are being referenced in this value. */ >if (value) > - update_table_tick (value); > +{ > + gcc_assert (insn); > + update_table_tick (value, DF_INSN_LUID (insn)); > +} Don't add that assert please. If you really want one it should come right at the start of the function, not 60 lines later :-) Looks good if I understood this correctly :-) Segher

Re: [PATCH] rs6000: Add new __builtin_vsx_build_pair and __builtin_mma_build_acc built-ins

2021-06-09 Thread Segher Boessenkool
build_pointer_type (vector_quad_type_node); > else if (gimple_func && mode == OOmode Pleae write the && mode == OOmode on a new line as well then? > + int index = WORDS_BIG_ENDIAN ? i: nvecs - 1 - i; Space before colon. Okay for trunk and 11 with at least that space fixed. Thanks! Segher

Re: [PATCH] rs6000: Support more short/char to float conversion

2021-06-09 Thread Segher Boessenkool
-final { scan-assembler-not "mfvsrwz" } } */ > +/* { dg-final { scan-assembler-not "mtvsrd" } } */ > +/* { dg-final { scan-assembler-not "mtvsrwa" } } */ > +/* { dg-final { scan-assembler-not "mtvsrwz" } } */ Here as well, or you could just do /* { dg-final { scan-assembler-not "\mm[tf]vsr" } } */ in this case, since no VSR<->GPR moves should happen at all. Segher

Re: [PATCH] rs6000: Support more short/char to float conversion

2021-06-10 Thread Segher Boessenkool
Hi! On Thu, Jun 10, 2021 at 05:32:23PM +0800, Kewen.Lin wrote: > +/* { dg-do compile { target lp64 } } */ One final thing: what requires lp64 here? Could you try without please? Okay for trunk with that considered. Thanks! Segher

[PATCH] rs6000: Fix *TItype_ppc

2021-06-10 Thread Segher Boessenkool
The *TItype_ppc definitions are guarded by _ARCH_PPC64, so all declarations using it should do so as well. This fixes it. Committed to trunk. Segher 2021-06-10 Segher Boessenkool libgcc/ * config/rs6000/quad-float128.h: Guard all uses of [U]TItype_ppc by _ARCH_PPC64

Re: [PATCH] rs6000: Add new __builtin_vsx_build_pair and __builtin_mma_build_acc built-ins

2021-06-10 Thread Segher Boessenkool
On Thu, Jun 10, 2021 at 10:43:05AM -0500, Peter Bergner wrote: > On 6/9/21 4:38 PM, Segher Boessenkool wrote: > > I think this reads simpler as > > /* The ASSEMBLE builtin source operands are reversed in little-endian > > mode, so reorder them. *

Re: Aligning stack offsets for spills

2021-06-10 Thread Segher Boessenkool
the same maximum displacement as D operands, we just force that their > bottom 2-bits/4-bits must be zero, so we don't need to include them in the > insn encoding. I believe this is all just handled in our legitimate address > routines, but maybe Segher and/or Mike can correct me if I&

Re: [PATCH,rs6000] Do not check if SMS succeeds on powerpc

2021-06-11 Thread Segher Boessenkool
egtest is passes, ok for trunk and backport to 11? Yes. Thank you! Segher

Re: [PATCH] rs6000: Support doubleword swaps removal in rot64 load store [PR100085]

2021-06-11 Thread Segher Boessenkool
On Thu, Jun 10, 2021 at 03:11:08PM +0800, Xionghu Luo wrote: > On 2021/6/10 00:24, Segher Boessenkool wrote: > >>"!BYTES_BIG_ENDIAN && TARGET_VSX && reload_completed && > >> !TARGET_P9_VECTOR > >> && !altivec_ind

Re: [PATCH] Fix effective target for check-builtin-vec_rlnm-runnable.c test

2021-06-11 Thread Segher Boessenkool
ltin-vec_rlnm-runnable.c (dg-require-effective-target): Change target to p9vector_hw. Okay for trunk like that. Thanks! Segher

Re: [PATCH] rs6000: Support more short/char to float conversion

2021-06-12 Thread Segher Boessenkool
On Fri, Jun 11, 2021 at 08:45:53PM +0800, Kewen.Lin wrote: > on 2021/6/10 下午6:58, Segher Boessenkool wrote: > > On Thu, Jun 10, 2021 at 05:32:23PM +0800, Kewen.Lin wrote: > >> +/* { dg-do compile { target lp64 } } */ > > > > One final thing: what requires lp64 here?

Re: [PATCH v3] libgcc: Add a backchain fallback to _Unwind_Backtrace() on PowerPC

2021-10-05 Thread Segher Boessenkool
letions(-) > create mode 100644 gcc/testsuite/gcc.target/powerpc/unwind-backchain.c So what is new or different in v3 compared to v2? Segher

Re: [PATCH v3] libgcc: Add a backchain fallback to _Unwind_Backtrace() on PowerPC

2021-10-06 Thread Segher Boessenkool
On Wed, Oct 06, 2021 at 10:09:31AM -0300, Raphael M Zinsly wrote: > On 05/10/2021 19:03, Segher Boessenkool wrote: > >So what is new or different in v3 compared to v2? > > gcc/testsuite/gcc.target/powerpc/unwind-backchain.c: > - Added a comment explaining why test only

Re: [PATCH v3 0/6] rs6000: Support more SSE4 intrinsics

2021-10-07 Thread Segher Boessenkool
ion the version history after a --- (see --notes for git-format-patch for example). > Tested ppc64le (POWER9) and ppc64/32 (POWER7). Please write the full triples -- well at least enough that they are usable, like, powerpc64-linux. I'll assume you tested on Linux :-) Segher

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-07 Thread Segher Boessenkool
r than mffs. So allowing this builtin to be used everywhere makes it easier to use, with no real downsides. Segher

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-07 Thread Segher Boessenkool
after it was added, because no one who tests often does that on so old hardware :-) So, okay for trunk (and backports after some burn-in) with that vsx_ok fixed. That asm needs fixing, but you can do that later. Thanks! Segher

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-08 Thread Segher Boessenkool
On Thu, Oct 07, 2021 at 08:04:23PM -0500, Paul A. Clarke wrote: > On Thu, Oct 07, 2021 at 06:39:06PM -0500, Segher Boessenkool wrote: > > > + __asm__ __volatile__ ("mffsce %0" : "=f" (__fpscr_save.__fr)); > > > > The __volatile__ does likely not do

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-08 Thread Segher Boessenkool
On Fri, Oct 08, 2021 at 02:27:28PM -0500, Paul A. Clarke wrote: > On Fri, Oct 08, 2021 at 12:39:15PM -0500, Segher Boessenkool wrote: > > This is not a basic asm (it contains a ":"; that is not just an easy way > > to see it, it is the *definition* of basic vs. extende

Re: [PATCH] rs6000/test: Adjust some cases due to O2 vect [PR102658]

2021-10-11 Thread Segher Boessenkool
on by default, which generates unexpected float > + conversion for vector construction, so simply disable it. */ It is good to see these comments. I love puzzles, but not in the testsuite! :-) Okay for trunk. Thanks! Segher

Re: [PATCH, rs6000] Disable gimple fold for float or double vec_minmax when fast-math is not set

2021-10-11 Thread Segher Boessenkool
return false; > +?? /* Fall through to MIN_EXPR.?? */ > +?? gcc_fallthrough (); > case P8V_BUILTIN_VMINSD: > case P8V_BUILTIN_VMINUD: > case ALTIVEC_BUILTIN_VMINSB: Yeah I would rather not review this like this :-) Segher

Re: [PATCH, rs6000] Disable gimple fold for float or double vec_minmax when fast-math is not set

2021-10-11 Thread Segher Boessenkool
On Mon, Oct 11, 2021 at 10:55:36AM -0500, Segher Boessenkool wrote: > On Thu, Aug 26, 2021 at 09:19:30AM +0800, HAO CHEN GUI wrote: > > gcc/ > > ?? * config/rs6000/rs6000-call.c (rs6000_gimple_fold_builtin): > > ?? Modify the VSX_BUILTIN_XVMINDP, A

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-11 Thread Segher Boessenkool
On Mon, Oct 11, 2021 at 08:46:17AM -0500, Paul A. Clarke wrote: > On Fri, Oct 08, 2021 at 05:31:11PM -0500, Segher Boessenkool wrote: > > "asm volatile" means there is a side effect in the asm. This means that > > it has to be executed on the real machine the same as on

Re: [PATCH] rs6000/test: Adjust some cases due to O2 vect [PR102658]

2021-10-11 Thread Segher Boessenkool
On Mon, Oct 11, 2021 at 10:23:03AM -0600, Martin Sebor wrote: > On 10/11/21 9:30 AM, Segher Boessenkool wrote: > >On Mon, Oct 11, 2021 at 10:47:00AM +0800, Kewen.Lin wrote: > >>- For generic test cases, it follows the existing suggested > >>practice with necessary target

Re: [PATCH v3 2/6] rs6000: Support SSE4.1 "min" and "max" intrinsics

2021-10-11 Thread Segher Boessenkool
target/powerpc/sse4_1-pminsd.c: Same. > * gcc.target/powerpc/sse4_1-pminud.c: Same. > * gcc.target/powerpc/sse4_1-pminuw.c: Same. Okay for trunk. Thanks! Segher

Re: [PATCH v3 3/6] rs6000: Simplify some SSE4.1 "test" intrinsics

2021-10-11 Thread Segher Boessenkool
for trunk either way. Thanks! Segher

Re: [PATCH v3 4/6] rs6000: Support SSE4.1 "cvt" intrinsics

2021-10-11 Thread Segher Boessenkool
e :-) Having up to three unpacks in a row seems suboptimal. But it certainly is aesthetically pleasing :-) > +/* { dg-do run } */ > +/* { dg-require-effective-target powerpc_vsx_ok } */ > +/* { dg-options "-O2 -mvsx" } */ Same as before here too (needs vsx_hw). Okay for trunk with that fixed. Thanks! Segher

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-11 Thread Segher Boessenkool
Hi! On Mon, Oct 11, 2021 at 12:31:07PM -0500, Paul A. Clarke wrote: > On Mon, Oct 11, 2021 at 11:28:39AM -0500, Segher Boessenkool wrote: > > > Very similar methods are used in glibc today. Are those broken? > > > > Maybe. > > Ouch. So show the code? > >

Re: [PATCH v3 5/6] rs6000: Support more SSE4 "cmp", "mul", "pack" intrinsics

2021-10-11 Thread Segher Boessenkool
t; * gcc.target/powerpc/sse4_1-pmulld.c: Same. > * gcc.target/powerpc/sse4_2-pcmpgtq.c: Same. > * gcc.target/powerpc/sse4_2-check.h: Copy from gcc.target/i386, > tweak to suit. Okay for trunk (with the vsx_hw thing). Thanks! Segher

Re: [PATCH v3 6/6] rs6000: Guard some x86 intrinsics implementations

2021-10-11 Thread Segher Boessenkool
; - _mm_sign_pi8: depends on _mm_sign_epi8. > - _mm_sign_pi16: depends on _mm_sign_epi16. > - _mm_sign_pi32: depends on _mm_sign_epi32. And more. > gcc > PR target/101893 This is a different bug (the vgbdd one)? All looks good, but we need such failing tests :-) Segher

Re: [PATCH v3 0/6] rs6000: Support more SSE4 intrinsics

2021-10-11 Thread Segher Boessenkool
On Thu, Oct 07, 2021 at 07:29:26PM -0500, Paul A. Clarke wrote: > On Thu, Oct 07, 2021 at 05:25:54PM -0500, Segher Boessenkool wrote: > > On Mon, Aug 23, 2021 at 02:03:04PM -0500, Paul A. Clarke wrote: > > > v3: Add "nmmintrin.h". _mm_cmpgt_epi64 is part of SSE4.2 &g

Re: [PATCH] rs6000/test: Adjust some cases due to O2 vect [PR102658]

2021-10-12 Thread Segher Boessenkool
do not expect to be able to fix the bug causing this any time soon. There shouldn't be one here, not yet anyway. Other than that: yes, and one you have such a selector, just dg-require it (or its inverse) for this test, don't xfail the test (if this is expected and correct behaviour). Segher

Re: [PATCH] rs6000/test: Adjust some cases due to O2 vect [PR102658]

2021-10-12 Thread Segher Boessenkool
On Tue, Oct 12, 2021 at 11:15:51AM -0600, Martin Sebor wrote: > On 10/12/21 10:18 AM, Segher Boessenkool wrote: > >On Tue, Oct 12, 2021 at 09:49:19AM -0600, Martin Sebor wrote: > >>Coming back to the xfail conditionals, do you think you'll > >>be able to put togeth

Re: [PATCH] rs6000/test: Adjust some cases due to O2 vect [PR102658]

2021-10-12 Thread Segher Boessenkool
On Mon, Oct 11, 2021 at 02:07:49PM -0600, Martin Sebor wrote: > On 10/11/21 11:43 AM, Segher Boessenkool wrote: > >I also am okay with this. If it was decided x86 does not have to deal > >with these (generic!) problems, then why should we do other people's > >work? >

Re: [PATCH] rs6000: Fix vec_cpsgn parameter order (PR101985)

2021-10-12 Thread Segher Boessenkool
" } */ If you need vsx_hw (or vsx_ok), you need -mvsx in the options as well. (Always, so in both testcases here). Segher

Re: [PATCH v3 1/6] rs6000: Support SSE4.1 "round" intrinsics

2021-10-12 Thread Segher Boessenkool
has to stay in order with all FP control writes and FP status reads". Maybe now you see why I like external functions for this :-) > This > is not used in the code above because I believe it first appears in > GCC 9.1 or so, and glibc still supports GCC 6.2 (and it doesn't define > a return value, which would be handy in this case). Does the > implementation of that builtin meet the requirements needed here, > to prevent reordering of FP computation across instantiations of the > builtin? If not, is there a model on which to base an implementation > of __builtin_mffsce (or some preferred name)? It depends on what you are actually ordering, unfortunately. Segher

Re: [PATCH, rs6000] Disable gimple fold for float or double vec_minmax when fast-math is not set

2021-10-13 Thread Segher Boessenkool
. When used with floating point, if both operands are zeros, or if either operand is @code{NaN}, then it is unspecified which of the two operands is returned as the result. """ (not exactly meaningless, okay, but not usable for almost anything). > But that can then still happen with -ffast-math so I wonder what's the point. That :-) Segher

Re: [PATCH, rs6000] Disable gimple fold for float or double vec_minmax when fast-math is not set

2021-10-13 Thread Segher Boessenkool
compile { target { powerpc*-*-* } } } */ Leave out the target clause? Testcases in gcc.target/powerpc/ are not run when this is not satisfied anyway, testing it twice is just more noise. Segher

Re: [PATCH v3 6/6] rs6000: Guard some x86 intrinsics implementations

2021-10-13 Thread Segher Boessenkool
On Wed, Oct 13, 2021 at 12:04:39PM -0500, Paul A. Clarke wrote: > On Mon, Oct 11, 2021 at 07:11:13PM -0500, Segher Boessenkool wrote: > > > - _mm_mul_epu32: vec_mule(v4su) uses vmuleuw. > > > > Did this fail on p7? If not, add a test that *does*? > > Do you me

Re: [PATCH, rs6000] punish reload of lfiwzx when loading an int variable [PR102169, PR102146]

2021-10-13 Thread Segher Boessenkool
the alternative 'Z' of "lfiwzx" when reload is > needed. "Disparage", no "s". Changelog entries are written in the imperative. Segher

Re: [PATCH] gcc/configure: check for powerpc64le-unknown-freebsd

2021-10-16 Thread Segher Boessenkool
sd* Only powerpc64-unknown-freebsd was checked for. Signed-off-by: Piotr Kubaj gcc/ * configure.ac: Treat powerpc64*-*-freebsd* the same as powerpc64-*-freebsd*. * configure: Regenerate. === Segher

Re: [PATCH] rs6000: Remove unnecessary option manipulation.

2021-10-19 Thread Segher Boessenkool
alyze and remove doubleword swaps from VSX computations. > > munroll-only-small-loops > -Target Undocumented Var(unroll_only_small_loops) Init(0) Save > +Target Undocumented Var(unroll_only_small_loops) Init(0) Save > EnabledBy(funroll-loops) Your patches cannot apply. Please send them non-wordwrapped. This isn't the endpoint of the changes here I hope? The macro games make everything less readable (so, harder to change) and more fragile. Segher

Re: [PATCH] rs6000: Remove unnecessary option manipulation.

2021-10-19 Thread Segher Boessenkool
ou can help it, it is meaningless in email. Use git send-email, it makes everything work :-) Segher

Re: [PATCH v4 1/3] rs6000: Add nmmintrin.h to extra_headers

2021-10-19 Thread Segher Boessenkool
s="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h" > > + extra_headers="${extra_headers} nmmintrin.h" > > extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h > > si2vmx.h" > > extra_headers="${extra_headers} amo.h" > > case x$with_cpu in > > In my opinion, you can commit this one as obvious. Or as trivial. Or as obvious and trivial :-) Segher

Re: [PATCH v4 3/3] rs6000: Guard some x86 intrinsics implementations

2021-10-19 Thread Segher Boessenkool
es). > gcc > PR target/101893 > PR target/102719 > * config/rs6000/emmintrin.h: Guard POWER8 intrinsics. > * config/rs6000/pmmintrin.h: Same. > * config/rs6000/smmintrin.h: Same. > * config/rs6000/tmmintrin.h: Same. Okay for trunk. Thanks! Segher

Re: [PATCH, rs6000] Disable gimple fold for float or double vec_minmax when fast-math is not set

2021-10-20 Thread Segher Boessenkool
he xvmindp builtin handle less than it does currently? And, what about vminfp? Did tht do the wrong thing before? There are no tests for any of that apparently. Hrm. Segher

Re: [PATCH 3/N] Come up with casm global state.

2021-10-21 Thread Segher Boessenkool
ate->init_sections (); > + > + return target_state; > +} > > If you'd have made init_sections virtual the flow would be more > natural and we could separate section init from casm construction > (and rs6000 would override init_sections but call the base function > from the override). Yeah. Segher

Re: [PATCH 3/N] Come up with casm global state.

2021-10-25 Thread Segher Boessenkool
On Mon, Oct 25, 2021 at 12:46:30PM +0200, Richard Biener wrote: > On Thu, Oct 21, 2021 at 5:42 PM Segher Boessenkool > wrote: > > It's disgusting, and fragile. The define is slightly better than having > > to write it out every time. But can this not be done properly? &g

Re: [PATCH 3/N] Come up with casm global state.

2021-10-25 Thread Segher Boessenkool
ind information, when > known. > + The section is set either by the target's init_sections hook or by the > + first call to switch_to_eh_frame_section. */ > +section *eh_frame; > + > +/* RS6000 sections. */ Nothing here? Just remove the comment header? The idea looks fine to me. Segher

Re: [PATCH] rs6000: Fixes for tests including only

2021-10-25 Thread Segher Boessenkool
cpu=power8 instead? (And -mdejagnu-cpu=power8 in testcases). (The changelog should say you added the -D btw). If you run you need *_hw. If you only compile, like here, you want to use *_ok instead. Okay for trunk with those things tuned up. Thanks! Segher

[PATCH] rs6000: Fix bootstrap (libffi)

2021-10-25 Thread Segher Boessenkool
This fixes bootstrap for the current problems building libffi. I'll work on getting this into upstream as well. If the maintainers want it done differently, at least we have bootstrap working again until then. Tested on powerpc64-linux {-m32,-m64}. Segher 2021-10-25 Segher Boesse

Re: [PATCH] gcc/configure: check for powerpc64le-unknown-freebsd

2021-10-26 Thread Segher Boessenkool
On Sun, Oct 17, 2021 at 02:28:48AM +0200, Piotr Kubaj wrote: > On 21-10-16 18:57:39, Segher Boessenkool wrote: > > On Sat, Oct 16, 2021 at 04:09:05AM +0200, Piotr Kubaj wrote: > > > Only powerpc64-unknown-freebsd was checked for. > > > > > > Signed-off-by: Piot

Re: [PATCH] rs6000: Fix bootstrap (libffi)

2021-10-27 Thread Segher Boessenkool
Hi! On Wed, Oct 27, 2021 at 11:44:59AM -0700, H.J. Lu wrote: > On Mon, Oct 25, 2021 at 4:39 PM Segher Boessenkool > wrote: > > This fixes bootstrap for the current problems building libffi. > > > > I'll work on getting this into upstream as well. If the maintainers

Re: [PATCH] rs6000: Add MMA __builtin_vsx_lxvp and __builtin_vsx_stxvp built-ins

2021-07-03 Thread Segher Boessenkool
On Fri, Jul 02, 2021 at 01:32:45PM -0500, Peter Bergner wrote: > On 7/1/21 2:48 PM, Peter Bergner wrote: > > On 7/1/21 1:01 PM, Segher Boessenkool wrote: > >> The patch is okay for trunk. > > > > Below is the updated patch which is bootstrapping now. I'll commi

Re: [PATCH 1/2] CALL_INSN may not be a real function call.

2021-07-05 Thread Segher Boessenkool
x27;t you do that here, wouldn't that work much better? There are many more insns that you may want to hide. The traditional solution is to use unspecs, which very directly hides all details. Segher

Re: [PATCH] rs6000: Add MMA __builtin_vsx_lxvp and __builtin_vsx_stxvp built-ins

2021-07-06 Thread Segher Boessenkool
.  That said, how about the following > >> change to resolve the issue you have?  I'll kick off a bootstrap and > >> regtest for this change. > > > > > > Thanks, yes, that works for me! > > Great, thanks! > > > Segher, the patch was clean on

Re: [PATCH 1/2] CALL_INSN may not be a real function call.

2021-07-07 Thread Segher Boessenkool
Hi! On Wed, Jul 07, 2021 at 10:15:08AM +0200, Richard Biener wrote: > On Wed, Jul 7, 2021 at 4:40 AM Hongtao Liu via Gcc-patches > wrote: > > On Tue, Jul 6, 2021 at 9:37 AM Hongtao Liu wrote: > > > On Tue, Jul 6, 2021 at 7:31 AM Segher Boessenkool > > > wrote: >

Re: [PATCH 1/2] CALL_INSN may not be a real function call.

2021-07-07 Thread Segher Boessenkool
And maybe some clobbers? Segher

Re: [PATCH] test/rs6000: Add cases to cover vector multiply

2021-07-07 Thread Segher Boessenkool
Hi! On Wed, Jul 07, 2021 at 05:02:42PM +0800, Kewen.Lin wrote: > This patch is to add test cases to check if vectorizer > can exploit vector multiply instrutions on Power, some > of them are supported since Power8, the other are newly > introduced by Power10. Okay for trunk. Thank you! Segher

Re: [PATCH] test/rs6000: Add case to cover vector division

2021-07-07 Thread Segher Boessenkool
On Wed, Jul 07, 2021 at 05:03:07PM +0800, Kewen.Lin wrote: > This patch is to add one test case to check if vectorizer > can exploit vector division instrutions newly introduced > by Power10. Okay, great, thanks! Segher

Re: [PATCH] rs6000: Support [u]mod3 for vector modulo insns

2021-07-07 Thread Segher Boessenkool
(umod3): ... this. ("Rename", not "Renamed") (It reads better if you put the "Adjust" entry after the rest, btw) So I suppose the new testcase FAILs without these changes? Okay for trunk. Thanks! Segher

Re: Repost: [PATCH] Generate 128-bit int divide/modulus on power10.

2021-07-07 Thread Segher Boessenkool
ot;) (every eight leading spaces should be tabs -- multiple times here) > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/p10-vdivq-vmodq.c > @@ -0,0 +1,27 @@ > +/* { dg-require-effective-target lp64 } */ int128, instead. There is nothing here that needs lp64. If there was, that should be commented here, too. Okay for trunk with those fixes. Also okay for all backports. Please make sure it tested on all usual platforms before backporting. Thanks! Segher

Re: [PATCH 1/2] CALL_INSN may not be a real function call.

2021-07-07 Thread Segher Boessenkool
On Wed, Jul 07, 2021 at 11:23:48PM +0800, Hongtao Liu wrote: > On Wed, Jul 7, 2021 at 10:54 PM Segher Boessenkool > wrote: [ snip some old stuff ] > > Yeah. This stuff needs a rethink. > > > > What is wrong with just using an unspec and clobbers? > > > It&

Re: [PATCH 1/2] CALL_INSN may not be a real function call.

2021-07-07 Thread Segher Boessenkool
On Wed, Jul 07, 2021 at 11:32:59PM +0800, Hongtao Liu wrote: > On Wed, Jul 7, 2021 at 10:54 PM Segher Boessenkool > wrote: > > So, a "FAKE_CALL" is very much a *real* call, on the RTL level, which is > > where we are here. But you want it to be treated differently be

Re: rs6000: Generate an lxvp instead of two adjacent lxv instructions

2021-07-08 Thread Segher Boessenkool
dex_next) > + : XVECEXP (src, 0, index); Please get rid of index_next, if you still have to do different code for LE here -- it doesn't make the code any clearer (in fact I cannot follow it at all anymore :-( ) So this converts pairs of lxv to an lxvp in only a very limited case, right? Can we instead do it more generically? And what about stxvp? Segher

Re: rs6000: Generate an lxvp instead of two adjacent lxv instructions

2021-07-09 Thread Segher Boessenkool
On Thu, Jul 08, 2021 at 08:26:45PM -0500, Peter Bergner wrote: > On 7/8/21 6:28 PM, Segher Boessenkool wrote: > >> int index = WORDS_BIG_ENDIAN ? i : nvecs - 1 - i; > >> -rtx dst_i = gen_rtx_REG (reg_mode, reg + index); > >> -emit_insn (gen_r

Re: [PATCH] Check type size for doloop iv on BITS_PER_WORD [PR61837]

2021-07-09 Thread Segher Boessenkool
some targets that do not have machine insns for this (but want to generate different code for this anyway) can do pretty much anything. Maybe using just Pmode here is good enough though? Segher

Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.

2021-07-12 Thread Segher Boessenkool
On Mon, Jul 12, 2021 at 06:19:28AM +0200, Martin Liška wrote: > PING^1 I did not notice you attached a new patch. It works a lot better if every patch series is a new thread. Segher

Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.

2021-07-12 Thread Segher Boessenkool
On Mon, Jun 28, 2021 at 02:19:03PM +0200, Martin Liška wrote: > On 6/24/21 12:46 AM, Segher Boessenkool wrote: > >>As mentioned in the "Fallout: save/restore target options in > >>handle_optimize_attribute" > >>thread, we need to support target option res

Re: Repost: [PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166

2021-07-12 Thread Segher Boessenkool
er-times {\mvsl[bhwd]\M} 0 } } */ > >-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M} 2 } } */ > >+/* { dg-final { scan-assembler-times > >{\mlvx\M|\mlxv\M|\mlxvd2x\M|\mplvx\M} 2 } } */ > > Oopsie.  I think you mean "plxv" for this one. So why did testing not catch it? Thanks for the review Bill! :-) Segher

Re: Repost: [PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166

2021-07-12 Thread Segher Boessenkool
ionale whatsoever for any of these changes, and the approach is different for every case as well. This means every case needs separate checking whether it is correct, which is more work than doing the changes in the first place. Mechanically just changing things so the test cases pass is **wrong**. Segher

Re: Repost: [PATCH] PR 100167: Fix vector long long multiply/divide tests on power10

2021-07-12 Thread Segher Boessenkool
etc.) We really should impprove that :-( If it had used powerpc64 here, there would not have been this confusion. The problem in fixing this of course is the historical uses of this test. Bah. Segher

Re: [PATCH 1/4] rs6000: Add support for SSE4.1 "test" intrinsics

2021-07-12 Thread Segher Boessenkool
ecommend approval with line lengths fixed.  It is okay for trunk with whatever changes you want to do. Thanks! Segher

<    8   9   10   11   12   13   14   15   16   17   >