Hi,
this patch implements a byte swap for a V8HImode vector via an element
rotate by 8 bits.
Bootstrapped and regtested, no regressions.
Is it OK?
Regards
Robin
gcc/ChangeLog:
PR target/100867
* config/s390/vector.md: Add special case for V8HImode.
gcc/testsuite/ChangeLog:
Hi,
this adds functions to recognize reverse/element swap permute patterns
for vler, vster as well as vpdi and rotate.
Bootstrapped and regtested, no regressions.
Is it OK?
Regards
Robin
gcc/ChangeLog:
* config/s390/s390.cc (expand_perm_with_vpdi): Recognize swap pattern.
Hi,
swapping the two elements of a V2DImode or V2DFmode vector can be done
with vpdi instead of using the generic way of loading a permutation mask
from the literal pool and vperm.
Analogous to the V2DI/V2DF case reversing the elements of a four-element
vector can be done by first swapping the
Hi,
this patch tries to be more explicit by mentioning z15 in s390_issue_rate.
No changes in testsuite, bootstrap or SPEC obviously.
Is it OK?
Regards
Robin
gcc/ChangeLog:
* config/s390/s390.cc (s390_issue_rate): Add z15.
---
gcc/config/s390/s390.cc | 1 +
1 file changed, 1
Hi,
inspired by Power we also introduce -munroll-only-small-loops. This
implies activating -funroll-loops and -munroll-only-small-loops at -O2
and above.
Bootstrapped and regtested.
This introduces one regression in gcc.dg/sms-compare-debug-1.c but
currently dumps for sms are broken as well.
file mode 100644
index 000..bc97bc50b78
--- /dev/null
+++ b/gcc/config/s390/3931.md
@@ -0,0 +1,2562 @@
+;; Scheduling description for z16.
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+;; Contributed by Robin Dapp (rd...@linux.ibm.com)
+
+;; This file is part of GCC.
+
+;; GCC
Hi,
this test case checks that we do not ICE but FAILs because of
-Wint-to-pointer-cast. Silence this warning.
Is it OK?
Regards
Robin
gcc/testsuite/ChangeLog:
* gcc.target/s390/pr80725.c: Add -Wno-int-to-pointer-cast.
---
gcc/testsuite/gcc.target/s390/pr80725.c | 2 +-
1 file
Hi,
some tests expect a convert instruction but nowadays the conversion is
already done at compile time. This results in a literal-pool load.
Change the tests accordingly.
OK for trunk?
Regards
Robin
gcc/testsuite/ChangeLog:
* gcc.target/s390/zvector/vec-double-compile.c: Expect vl
Hi,
we have been emitting the "higher" variantes instead of the "not less or
equal" ones for a while. Change the test expectations accordingly.
OK for trunk?
Regards
Robin
gcc/testsuite/ChangeLog:
* gcc.target/s390/ifcvt-two-insns-bool.c: Change nle to h.
*
Hi,
in gcc.dg/Wuse-after-free-2.c we try to detect a use-after-free. On
s390 the test's while loop is converted into a rawmemchr builtin making
it impossible to determine that the pointers *p and *q are related.
Therefore, disable the tree loop distribute patterns pass on s390 for
this test.
Hi Claudiu,
> The patch looks good. Please go ahead and merge it, please let me know if
> you cannot.
I merged the patch leaving your check
if (cmode != SImode && cmode != SFmode && cmode != DFmode)
return NULL_RTX;
in place. It is not strictly necessary anymore but I figured it also
> If the movcc comparison is not valid it triggers an assert in the
> current implementation. This behavior is not needed as we can FAIL
> the movcc expand pattern.
In case of a MODE_CC comparison you can also just return it as described
here https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104154
:
* gcc.target/s390/vector/vec-sum-across-no-lower-subreg-1.c: New
test.
>From 8c4c6f029dbf0c9db12c2877189a5ec0ce0a9c89 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Thu, 3 Feb 2022 12:50:04 +0100
Subject: [PATCH] s390: Change SET rtx_cost handling.
The IF_THEN_ELSE detect
Hi,
> Robin's patch has the effct making rs6000_emit_int_cmove return false for
> floating point comparisons, so I marked the bug as being a duplicate of PR
> target/104335.
Didn't I just return false for MODE_CC? This should not affect proper
floating-point comparisons. It looks like the
. Thank you.
Regards
Robin
--
PR104154
gcc/ChangeLog:
* config/arc/arc.cc (gen_compare_reg): Return the CC-mode
comparison ifcvt passed us.
---
>From fa98a40abd55e3a10653f6a8c5b2414a2025103b Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Mon, 7 Feb 2022 08:39:41 +0
> Please send patches as plain text, not as base64.
It seems like Thunderbird does not support this anymore since later
versions, grml. Probably need to look for another mail client.
> Why that first test? XEXP (op, 0) is required to not be nil.
>
> The patch is okay without that (if it
9ebde57266 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Thu, 10 Feb 2022 09:01:51 -0600
Subject: [PATCH] rs6000: Workaround for new ifcvt behavior [PR104335].
Since r12-6747-gaa8cfe785953a0 ifcvt passes a "cc comparison"
i.e. the representation of the result of a comparison to the
> Patch is ok. Thanks!
As discussed off-list, committed as attached.
Regards
Robin
commit 1e3185e714e877b2b4d14ade0865322f71a8cbf6
Author: Robin Dapp
Date: Tue Feb 8 14:56:29 2022 +0100
s390: Increase costs for load on condition and change movqicc expander.
This patch chan
Hi Martin,
> Either this:
>
>error ("% is unknown", orig_p);
>
> or this would be better:
>
>error ("attribute % is unknown", orig_p);
>
> The %< %> directives will render it in single quotes like keywords and
> identifiers. Using %qs would render it in double quotes like a string,
>
> Do you need to adjust anything now that this is emitting into TEMP
> rather than TARGET?
The idea now is to emit to TEMP in the first pass and check if we read
the initial condition. Overwriting the condition (and of course reading
it in every sequence) is the reason temporaries were needed
format strings.commit 41270791b1d1235d580b6d81c315c74ad07c1807
Author: Robin Dapp
Date: Tue Feb 1 10:13:52 2022 +0100
s390: Fix bootstrap by splitting format string.
Recently -Werror=format-diag was turned on for bootstrap which broke
s390 bootstrap.
This patch splits
* ifcvt.cc (noce_convert_multiple_sets_1): Copy rtx instead of
using it
directly. Rework comparison handling and always perform a
second pass.
gcc/testsuite/ChangeLog:
* gcc.dg/pr104198.c: New test.commit 68489d5729b4879bf2df540753fc7ea8ba1565a5
Author: Robin Dapp
Date: Mon Jan 2
.
(s390_branch_condition_mask): Likewise.
(s390_reverse_condition): Likewise.
* config/s390/s390.h (REVERSIBLE_CC_MODE): Likewise.
* config/s390/s390.md: Likewise.
* config/s390/subst.md: Likewise.commit d3d4f8486340ff889de0dd709262f31953c54eda
Author: Robin Dapp
/ChangeLog:
* config/s390/s390.cc (s390_rtx_costs): Increase costs for load
on condition.
* config/s390/s390.md: Change mov[qi/si]cc expander.commit b246f96c2a2813d0e509e7916744cda07cc5131c
Author: Robin Dapp
Date: Fri Jun 18 10:51:22 2021 +0200
s390: Increase costs
> Could you try the attached?
The series with the patch is OK from a testsuite point of view. The
other problem appears later.
Regards
Robin
Hi Richard,
> Could you try the attached?
build and bootstrap look OK with it. Testsuite shows lots of fallout
but the proper bisect isn't finished yet. The commit before your series
is still fine - the problem could also be after it, though. Will report
back later.
Thanks
Robin
Hi Richard,
this causes a bootstrap error on s390 (where
IRA_HARD_REGNO_ADD_COST_MULTIPLIER is defined). rclass is used in the
#define-guarded area. I guess you also wanted to move this to the new
function ira_caller_save_cost?
Regards
Robin
--
../../gcc/ira-costs.c: In function ‘void
Hi Richard,
> I think it would be better to fold this into the existing documentation
> a bit more:
[..]
done.
Fixed the remaining nits in the attached v5.
Bootstrap and regtest are good on s390x, Power9 and i386.
Regards
Robin
--
gcc/ChangeLog:
* config/rs6000/vsx.md: Use const0
Posting the ChangeLog before pushing.
--
gcc/ChangeLog:
* ifcvt.c (noce_convert_multiple_sets_1): New function.
(noce_convert_multiple_sets): Call function a second time if we can
improve the first try.
Posting the ChangeLog before pushing.
--
gcc/testsuite/ChangeLog:
* gcc.dg/ifcvt-4.c: Remove s390-specific check.
* gcc.target/s390/ifcvt-two-insns-bool.c: New test.
* gcc.target/s390/ifcvt-two-insns-int.c: New test.
* gcc.target/s390/ifcvt-two-insns-long.c: New
Posting the ChangeLog before pushing.
--
gcc/ChangeLog:
* ifcvt.c (cond_exec_get_condition): New parameter to allow getting the
reversed comparison.
(try_emit_cmove_seq): New function to facilitate creating a cmov
sequence.
(noce_convert_multiple_sets):
Posting the ChangeLog before pushing.
--
gcc/ChangeLog:
* rtl.h (struct rtx_comparison): New struct that holds an rtx
comparison.
* config/rs6000/rs6000.c (rs6000_emit_minmax): Use struct instead of
single parameters.
(rs6000_emit_swsqrt): Likewise.
Posting the ChangeLog before pushing.
--
gcc/ChangeLog:
* ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Estimate insns costs.
(noce_process_if_block): Use potential costs.
Posting the ChangeLog before pushing.
--
gcc/ChangeLog:
* ifcvt.c (noce_convert_multiple_sets): Allow constants.
(bb_ok_for_noce_convert_multiple_sets): Likewise.
Hi,
I included the outstanding minor remarks and believe everything is OK'ed
now. Still posting the ChangeLogs that I omitted before continuing.
I'd expect some fallout on other targets (hopefully nothing major) since
rtx costs are handled differently now for this code path.
Regards
Robin
--
Hi Richard,
I incorporated all your remarks (sorry for the hunk from a different
branch) except for this one:
> Think it would be better to make it:
>
> if (use_bias_adjusted_len)
> {
> gcc_assert (i == 0);
>
> But do we need to do this? Code should only care
Regards
Robincommit 63926561fcdeace9e07b0240fc929b47b7b99404
Author: Robin Dapp
Date: Fri Sep 17 20:22:10 2021 +0200
ifcvt: Run second pass if it is possible to omit a temporary.
If one of the to-be-converted SETs requires the original comparison
(i.e. in order to generate a min/max insn) b
Hi Jeff,
thanks for looking into this.
> What if the condition has a side effect? Doesn't this drop the side
> effect by converting the conditional move into a simple move?
Hmm, good point, if the condition does more than a CC compare, it might
get tricky as we are not canonicalizing here (on
Hi Kewen, Richard,
thanks for the comments, I addressed them in the attached v4.
Bootstrap and regtest are good as before.
Regards
Robindiff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index bf033e31c1c..dc2756f83e9 100644
--- a/gcc/config/rs6000/vsx.md
+++
If one of the to-be-converted SETs requires the original comparison
(i.e. in order to generate a min/max insn) but no other insn after it
does, we can omit creating temporaries, thus facilitating costing.
---
gcc/ifcvt.c | 33 +++--
1 file changed, 31 insertions(+), 2
Add new s390-specific tests that check if we convert two SETs into two
loads on condition. Remove the s390-specific target-check in
gcc.dg/ifcvt-4.c.
---
gcc/testsuite/gcc.dg/ifcvt-4.c| 2 +-
.../gcc.target/s390/ifcvt-two-insns-bool.c| 39 +++
Following up on the previous patch, this patch makes
noce_convert_multiple emit two cmov sequences: The same one as before
and a second one that tries to re-use the existing CC. Then their costs
are compared and the cheaper one is selected.
---
gcc/ifcvt.c | 112
Currently we only ever call emit_conditional_move with the comparison
(as well as its comparands) we got from the jump. Thus, backends are
going to emit a CC comparison for every conditional move that is being
generated instead of re-using the existing CC.
This, combined with emitting temporaries
This lifts the restriction of not allowing constants for
noce_convert_multiple. The code later checks if a valid sequence
is produced anyway.
---
gcc/ifcvt.c | 13 -
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index c98668d5646..4642176957e
When noce_convert_multiple is called the original costs are not yet
initialized. Therefore, up to now, costs were only ever unfairly
compared against COSTS_N_INSNS (2). This would lead to
default_noce_conversion_profitable_p () rejecting all but the most
contrived of sequences.
This patch
When if-converting multiple SETs and we encounter a swap-style idiom
if (a > b)
{
tmp = c; // [1]
c = d;
d = tmp;
}
ifcvt should not generate a conditional move for the instruction at
[1].
In order to achieve that, this patch goes through all relevant SETs
and
if I'm
not mistaken, 5/7, 6/7 (very minor) and 7/7 still need review.
Robin Dapp (7):
ifcvt: Check if cmovs are needed.
ifcvt: Allow constants for noce_convert_multiple.
ifcvt: Improve costs handling for noce_convert_multiple.
ifcvt/optabs: Allow using a CC comparison for emit_conditiona
Hi Richard,
> It's hard to judge this in isolation because it's not clear when
> and how the new arguments are going to be used, but it seems OK
> in principle. Do you still want:
>
> /* If earliest == jump, try to build the cmove insn directly.
> This is helpful when combine has created
Hi Kewen and Richard,
the attached v3 addresses the comments to v2, among others:
- Rename to load_store where appropriate.
- Save the adjusted length as a separate control that is used instead
of loop_len with a bias != 0 and added to the loop header.
- Update the costs to reflect a bias.
Ping :)
Not wanting to pester but I'd have hoped to get this into stage1 still
as it helps performance on s390 in some cases.
Expecting there will be some more reviewing rounds for the remaining
patches, would I need to open a PR in order to be able to "officially"
commit this in a later stage?
Hi,
thanks for the helpful comments. The attached v2 addresses the following
points from them:
- Save the bias in loop_vinfo and set it once in vect_verify_loop_lens.
- Add code to handle the bias in vect_set_loop_controls_directly.
- Adjust costing.
- Add comments for the new len_load
not support
lengths of zero bytes and a bias of -1 should be used.
Bootstrapped and regtested on Power9 (--with-cpu=power9) and s390
(--with-arch=z15).
The tiny changes in the Power backend I will post separately.
Regards
Robincommit 18a5fcd0f8835247e86d86fb018789fe755404be
Author: Robin Dapp
Date
where we
exclude multiple loop_lens is still missing. Would we also check for a
viable bias there and then either accept multiple lens or not?
Regards
Robincommit 2320dbfdfe1477b15a2ac59847d2a52e68de49ab
Author: Robin Dapp
Date: Tue Oct 26 14:36:08 2021 +0200
bias1
diff --git a/gcc
Hi,
I have been playing around with making Kewen's partial vector changes
workable with s390:
We have a vll instruction that can be passed the highest byte to load.
The rather unfortunate consequence of this is that a length of zero
cannot be specified. The partial vector framework,
ther archs.
Regards
Robin
commit eb50384ee0cdeeefa61ae89bdbb2875500b7ce60
Author: Robin Dapp
Date: Wed Nov 27 13:53:40 2019 +0100
ifcvt/optabs: Allow using a CC comparison for emit_conditional_move.
Currently we only ever call emit_conditional_move with the comparison
(as w
Hi Richard,
(2) Insert:
if (SUBREG_P (src))
src = SUBREG_REG (src);
here.
OK with those changes if that works. Let me know if they don't —
I'll try to be quicker with the next review.
thank you, this looks good in a first testsuite run on s390. If you
have time, would you
and regtested on s390, x86 and ppc64.
Regards
Robin
--
gcc/ChangeLog:
* ifcvt.c (noce_convert_multiple_sets): Perform a second try
with less temporaries.
commit dd5a0f8d7d39447025d36ed5305709d38fe3f16b
Author: Robin Dapp
Date: Fri Sep 17 20:22:10 2021 +0200
ifcvt: Run second pass
Hi,
pinging this patch:
https://gcc.gnu.org/pipermail/gcc-patches/2021-June/573509.html
It introduces a check for a paradoxical subreg in combine that would ICE
otherwise.
Regards
Robin
n't manage to trigger it myself).
Regards
Robin
commit 2d909ee93ee1eb0f7474ed57581713367c22ba6c
Author: Robin Dapp
Date: Thu Jun 24 16:40:04 2021 +0200
ifcvt: Check if cmovs are needed.
When if-converting multiple SETs and we encounter a swap-style idiom
if (a > b)
Hmm, OK. Doesn't expanding both versions up-front create the same kind of
problem that the patch is fixing, in that we expand (and therefore cost)
both the reversed and unreversed comparison? Also…
[..]
…for min/max, I would have expected this swap to create the canonical
operand order for
Hi,
v2 now properly gets the reversed CC comparison. It also handles a cost2
== 0 situation that would prefer an empty seq2 before.
Regards
Robin
>From 12b796c4e081ba8a2e136958f4bf919c63516de6 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Thu, 24 Jun 2021 15:22:42 +0200
Subject: [PATCH
obin
>From 0526fa57290941c8b7febd138ab4c637b83f3d05 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Wed, 27 Nov 2019 13:53:40 +0100
Subject: [PATCH v2 4/7] ifcvt/optabs: Allow using a CC comparison for
emit_conditional_move.
Currently we only ever call emit_conditional_move with the comparison
(a
rom 54508fa00fbee082fa62f4e1a8167f477938e781 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Wed, 27 Nov 2019 13:46:17 +0100
Subject: [PATCH v2 3/7] ifcvt: Improve costs handling for
noce_convert_multiple.
When noce_convert_multiple is called the original costs are not yet
initialized. Therefore, up to
in the
condition as well. If needed this could be two separate patches (most
of the second patch would be comments, though).
Regards
Robin
>From bf7e372d7f48e614f20676c7cf4b2fbde741d4fc Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Thu, 24 Jun 2021 16:40:04 +0200
Subject: [PATCH v2 1/7] ifcvt: Ch
Ping :)
gcc/ChangeLog:
* combine.c (try_combine): Check for paradoxical subreg.
ping.
---
gcc/config/s390/s390.c | 2 +-
gcc/config/s390/s390.md | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 6bbeb640e1f..e3b1f99669f 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -3636,7 +3636,7
When noce_convert_multiple is called the original costs are not yet
initialized. Therefore, up to now, costs were only ever unfairly
compared against COSTS_N_INSNS (2). This would lead to
default_noce_conversion_profitable_p () rejecting all but the most
contrived of sequences.
This patch
This lifts the restriction of not allowing constants for
noce_convert_multiple. The code later checks if a valid sequence
is produced anyway.
---
gcc/ifcvt.c | 13 -
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index eef6490626a..6006055f26a
Add new s390-specific tests that check if we convert two SETs into two
loads on condition. Remove the s390-specific target-check in
gcc.dg/ifcvt-4.c.
---
gcc/testsuite/gcc.dg/ifcvt-4.c| 2 +-
.../gcc.target/s390/ifcvt-two-insns-bool.c| 39 +++
Following up on the previous patch, this patch makes
noce_convert_multiple emit two cmov sequences: The same one as before
and a second one that tries to re-use the existing CC. Then their costs
are compared and the cheaper one is selected.
---
gcc/ifcvt.c | 94
situation on
s390 and, in general, allows more accurate costing.
Regards
Robin
Robin Dapp (7):
ifcvt: Check if cmovs are needed.
ifcvt: Allow constants for noce_convert_multiple.
ifcvt: Improve costs handling for noce_convert_multiple.
ifcvt/optabs: Allow using a CC comparison for emit_condit
Currently we only ever call emit_conditional_move with the comparison
(as well as its comparands) we got from the jump. Thus, backends are
going to emit a CC comparison for every conditional move that is being
generated instead of re-using the existing CC.
This, combined with emitting temporaries
When if-converting multiple SETs and we encounter a swap-style idiom
if (a > b)
{
tmp = c; // [1]
c = d;
d = tmp;
}
ifcvt should not generate a conditional move for the instruction at
[1].
In order to achieve that, this patch goes through all relevant SETs
and
cal subreg.
>From 2b74c66f8d97c30c45e99336c9871cccd8cf94e1 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Tue, 22 Jun 2021 17:35:37 +0200
Subject: [PATCH 11/11] combine paradoxical subreg fix.
---
gcc/combine.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gcc/combine.c
(eq (match_operand: 3 "register_operand" "")
Ah, yes, it's indeed much simpler that way. Attached the revised
version with the small change and the new tests as a single patch now.
Regtest and bootstrap was successful.
Regards
Robin
>From 790feb49a6494c33f0fd4386a8148e0a4
gcc/testsuite/ChangeLog:
* gcc.dg/vect/pr56541.c: Add vect_floatint_cvt.
OK. I'd tend to use XFAIL for a compiler bug that we haven't fixed. In
this case the target doesn't support what the test is trying to do. So
skipping the test in one manner or another seems better.
Just
As you say, the logic is convoluted. Let's simplify it rather than make
it more convoluted. One possibility would be to change || to | to avoid
the shortcut, and then
bool note = lastalign > curalign;
if (note)
curalign = lastalign;
I went with your suggestion in the attached v2.
This is the revised testsuite change with v2 adding a check for no
separate note for
__attribute__((aligned (32), aligned (4)).
Regards
Robin
diff --git a/gcc/testsuite/c-c++-common/Wattributes.c b/gcc/testsuite/c-c++-common/Wattributes.c
index 4ad90441b4d..a97e5ad5f74 100644
---
As you say, the logic is convoluted. Let's simplify it rather than make
it more convoluted. One possibility would be to change || to | to avoid
the shortcut, and then
bool note = lastalign > curalign;
if (note)
curalign = lastalign;
I went with your suggestion in the attached v2.
Hi Martin and Jason,
The removal of the dead code looks good to me. The change to
"re-init lastalign" doesn't seem right. When it's zero it means
the conflict is between two attributes on the same declaration,
in which case the note shouldn't be printed (it would just point
to the same
on s390 a warning test fails:
inline int ATTR ((cold, aligned (8)))
finline_hot_noret_align (int);
inline int ATTR ((warn_unused_result))
finline_hot_noret_align (int);
inline int ATTR ((aligned (4)))
finline_hot_noret_align (int); /* { dg-warning "ignoring attribute
.aligned \\(4\\).
Ping.
vcond_mask with mixed mode.
(vcond_mask_): Dito.
gcc/testsuite/ChangeLog:
* gcc.target/s390/vector/vcond-mixed-double.c: New test.
* gcc.target/s390/vector/vcond-mixed-float.c: New test.
>From 4ce2d9a3f43c44d35142a726921258540adfca51 Mon Sep 17 00:00:00 2001
From: Ro
Hi,
this patch adds some s390 checks for vect_*_cvts. Is it OK?
Regards
Robin
gcc/testsuite/ChangeLog:
* lib/target-supports.exp: Add s390 checks for vect conversions.
>From 959251d5d2684a9ffebec1b341a4413c2f2328db Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Thu, 22 Apr 2021
ter an xfail with ! vect_floatint_cvt?
Regards
Robin
gcc/testsuite/ChangeLog:
* gcc.dg/vect/pr56541.c: Add vect_floatint_cvt.
>From 4c19323b2c392923391a3c37b92054852d671c19 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Thu, 22 Apr 2021 09:22:07 +0200
Subject: [PATCH 03/1
pattern.
>From ca1a204ff1753f4902bb58668d0ceafcc17d1232 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Tue, 27 Apr 2021 16:17:35 +0200
Subject: [PATCH] testsuite/s390: Fix risbg-ll-3.c f2_cconly test.
Instead of selecting bits 62 to (wraparound) 59 from r2 and inserting them
into r3, we sel
Hi,
on s390 we vectorize 4 statements using SLP. Add s390*-*-* to the
appropriate dg-finals.
Is that OK?
Regards
Robin
gcc/testsuite/ChangeLog:
* gcc.dg/vect/slp-21.c: Add s390.
>From 5f31f411ee36be8c8f3000cfc07b2609796142b7 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Tue,
Hi,
Yeah, that's because of the very limited analysis we do in the backend to
detect such cases. In fact
we probably would want to have an OSC break in many of them as well.
For me the testcase appears to work with -O2 on all the -march levels. I think
-O2 would be
preferred because that's
/Wattributes-6.c: Dito.
>From 0bfe8dff9190862e514e735053d50ea2426dbde7 Mon Sep 17 00:00:00 2001
From: Robin Dapp
Date: Tue, 16 Mar 2021 11:52:32 +0100
Subject: [PATCH 2/2] testsuite: Fix Wattributes test cases for s390 and add
new test.
There are several FAILs because we have an s390-specific ch
gcc/c-family/ChangeLog:
* c-attribs.c (common_handle_aligned_attribute): Re-init
lastalign and remove case.
gcc/c/ChangeLog:
* c-decl.c (merge_decls): Copy DECL_USER_ALIGN even for similar
DECL_ALIGN.
gcc/cp/ChangeLog:
* decl.c (duplicate_decls): Dito.
>From f3a9f8b9
Hi,
checking for an osc break is somewhat brittle especially with many
passes potentially introducing new insns and moving them around.
Therefore, only run the test with -O1 -fschedule-insns in order to limit
the influence of other passes.
Is it OK?
Regards
Robin
--
gcc/testsuite/ChangeLog:
Do the testcases currently fail? How? In principle moving to vect/
is OK but then having the gimplefe testcases in one place is nice ...
yes, they ICE on targets that do not have vector capabilities:
gimplefe-40.c:7:1: internal compiler error: in emit_move_insn, at
expr.c:3821
Normally we
tory.
Is this OK?
Regards
Robin
--
gcc/testsuite/ChangeLog:
* gcc.dg/gimplefe-40.c: Moved to...
* gcc.dg/vect/gimplefe-40.c: ...here.
* gcc.dg/gimplefe-41.c: Moved to...
* gcc.dg/vect/gimplefe-41.c: ...here.
commit 1acd4d01c41aeea78ec3c188beb25b245dda4c8b
> OK from me, what about earlier comments of using __asm__ in a C
> source file?
>
> I wouldn't really object to converting all .S sources (infact I can
> do this myself) if it meant slightly better portability.
Adding to yesterday's message: feel free to apply the current version if
it's OK.
Hi Iain,
> OK from me, what about earlier comments of using __asm__ in a C
> source file?
I don't mind too much either way but I gathered from the discussion in
the bugzilla that .S was preferred for now.
Regards
Robin
Hi,
in order to not use a glibc-internal symbol anymore, this patch adds
separate .S files for s390x and s390 that allow to obtain the tls offset.
I bootstrapped on s390x -m64 and -m31 and test on s390x, s390 seeing no
new regressions.
Regards
Robin
--
libphobos/ChangeLog:
2019-11-27 Robin
Hi,
I committed this patch (obvious). It fixes the s390 bootstrap by
undefining existing defines before redefining them.
Regards
Robin
--
gcc/ChangeLog:
2019-11-26 Robin Dapp
* config/s390/linux.h: Add undef for MUSL_DYNAMIC_LINKERxx.
commit
>> PR37451. Not clear what target that regressed on, btw.
>
> And PR55190 and PR67288 and probably more.
Thanks for finding those. So the hope is to get this fixed or rather
move towards a fix with the patch series that's currently reviewed which
injects some doloop knowledge into ivopts?
As
Hi,
as announced in the wrapped-binop gimple patch mail, on s390 we still
emit odd code in front of loops:
void v1 (unsigned long *in, unsigned long *out, unsigned int n)
{
int i;
for (i = 0; i < n; i++)
{
out[i] = in[i];
}
}
-->
aghi%r1,-8
srlg
701 - 800 of 973 matches
Mail list logo