This is the counterpart of the i386 feature introduced by
39a5a6a4: Add direct support for Linux kernel __fentry__ patching.
This is the counterpart of the i386 feature introduced by
39a5a6a4: Add direct support for Linux kernel __fentry__ patching.
* gcc/config/s390/s390.c (s390_function_profiler): Generate
__mcount_loc section.
* gcc/config/s390/s390.opt: Add the new option.
* gcc/tests
This is the counterpart of the i386 feature introduced by
39a5a6a4: Add direct support for Linux kernel __fentry__ patching.
On i386 the profiler call sequence always consists of 1 call
instruction, so -mnop-mcount generates a single nop with the same
length as a call. For S/390 longer sequences m
This is the counterpart of the i386 feature introduced by
39a5a6a4: Add direct support for Linux kernel __fentry__ patching.
On i386, the difference between mcount and fentry is that fentry
comes before the prolog. On s390 mcount already comes before the
prolog, but takes 4 instructions. This patc
Fixes unwind for mcount.
2018-07-17 Ilya Leoshkevich
* config/s390/s390.c (s390_function_profiler):
Generate CFI.
---
gcc/config/s390/s390.c | 19 ++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
FIRST_PSEUDO_REGISTER is not a hard regno, so comparisons should use
"<" instead of "<=", and ">=" instread of ">".
2018-07-19 Ilya Leoshkevich
* config/nds32/nds32.c (nds32_hard_regno_mode_ok):
Replace > wi
Boostrapped and regtested on s390x-redhat-linux.
gcc/ChangeLog:
2019-10-21 Ilya Leoshkevich
* config/s390/s390.c (s390_get_thread_pointer): Use
gen_get_thread_pointer.
(s390_expand_split_stack_prologue): Likewise.
* config/s390/s390.md (UNSPEC_GET_TP): New
bine, 3918 edges are
threaded.
This means this change will not introduce performance regressions.
gcc/ChangeLog:
2019-10-17 Ilya Leoshkevich
PR rtl-optimization/92007
* cfgcleanup.c (thread_jump): Add an assertion that we don't
call it after reload if hot/cold
the dominator tree, which in turn makes
delete_basic_block loop forever.
Fix by freeing dominance info at the beginning of cleanup_cfg.
gcc/ChangeLog:
2019-11-12 Ilya Leoshkevich
PR rtl-optimization/92430
* cfgcleanup.c (pass_jump_after_combine::execute): Free
dominance
> Am 12.11.2019 um 15:32 schrieb Segher Boessenkool
> :
>
> Hi!
>
> On Tue, Nov 12, 2019 at 03:11:05PM +0100, Ilya Leoshkevich wrote:
>> try_forward_edges does not update dominance info, and merge_blocks
>> relies on it being up-to-date. In PR92430 stale domina
> On Tue, Nov 12, 2019 at 04:32:36PM +0100, Ilya Leoshkevich wrote:
>>> Am 12.11.2019 um 15:32 schrieb Segher Boessenkool
>>> :
>>> On Tue, Nov 12, 2019 at 03:11:05PM +0100, Ilya Leoshkevich wrote:
>>>> unsigned int
>>>> pass_jump_afte
Bootstrapped and regtested on s390x-redhat-linux. Ok for master?
libsanitizer/ChangeLog:
* sanitizer_common/sanitizer_linux_s390.cpp (AvoidCVE_2016_2143):
Do not mention MSan and DFSan, which are not supported by GCC.
---
libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp |
On Sat, 2024-04-06 at 18:58 +0200, Jakub Jelinek wrote:
> Hi!
>
> The following testcase is miscompiled, because we have initially
> a movti which loads the 0x3f803f80ULL TImode constant
> from constant pool. Later on we split it into a pair of DImode
> loads. Now, for the first load (wh
DSE, DCE, and other passes are removing redundant signaling comparisons
from these tests, but the whole point is to check that GCC knows how to
emit them. Use -fno-delete-dead-exceptions to prevent that.
gcc/testsuite/ChangeLog:
* gcc.target/s390/zvector/autovec-double-signaling-eq.c:
ME using
ASM_OUTPUT_FUNCTION_LABEL")
Suggested-by: Jakub Jelinek
Signed-off-by: Ilya Leoshkevich
gcc/ChangeLog:
PR sanitizer/113284
* config/rs6000/rs6000.cc (rs6000_elf_declare_function_name):
Use assemble_function_label_final () for Power ELF V1 ABI.
edict Glaw
Suggested-by: Jan-Benedict Glaw
Fixes: c659dd8bfb55 ("Implement ASM_DECLARE_FUNCTION_NAME using
ASM_OUTPUT_FUNCTION_LABEL")
Signed-off-by: Ilya Leoshkevich
gcc/ChangeLog:
* defaults.h (ASM_OUTPUT_FUNCTION_LABEL): Mark DECL as used.
---
gcc/defaults.h | 7 +-
338.html
[4] https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549252.html
[5] https://patchwork.ozlabs.org/project/gcc/list/?series=320223
[6] https://patchwork.ozlabs.org/project/gcc/list/?series=297132
[7] http://toolchain.lug-owl.de/laminar/jobs
Ilya Leoshkevich (2):
Implement ASM_DECLARE_F
gccint recommends using ASM_OUTPUT_FUNCTION_LABEL in
ASM_DECLARE_FUNCTION_NAME, but many implementations use
ASM_OUTPUT_LABEL instead. It's inconsistent and prevents changes to
ASM_OUTPUT_FUNCTION_LABEL from affecting the respective targets.
---
gcc/config/aarch64/aarch64.cc | 2 +-
gcc/co
GCC can emit code between the function label and the .LASANPC label,
making the latter unaligned. Some architectures cannot load unaligned
labels directly and require literal pool entries, which is inefficient.
Move the invocation of asan_function_start to
ASM_OUTPUT_FUNCTION_LABEL, which guarant
SANPC on function boundary")
Suggested-by: Jakub Jelinek
Signed-off-by: Ilya Leoshkevich
gcc/ChangeLog:
PR sanitizer/113251
* varasm.cc (assemble_function_label_raw): Do not call
asan_function_start () without the current function.
---
gcc/varasm.cc | 4 +++-
1 file
other branches already
use the correct macro.
Fixes: c659dd8bfb55 ("Implement ASM_DECLARE_FUNCTION_NAME using
ASM_OUTPUT_FUNCTION_LABEL")
Signed-off-by: Ilya Leoshkevich
gcc/ChangeLog:
PR sanitizer/113284
* config/rs6000/rs6000.cc (rs6000_elf_declare_function_name):
On Tue, 2024-01-09 at 11:55 -0700, Jeff Law wrote:
>
>
> On 1/2/24 12:41, Ilya Leoshkevich wrote:
> > GCC can emit code between the function label and the .LASANPC
> > label,
> > making the latter unaligned. Some architectures cannot load
> > unaligned
> &
[3] https://gcc.gnu.org/pipermail/gcc-patches/2020-June/548338.html
[4] https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549252.html
[5] https://patchwork.ozlabs.org/project/gcc/list/?series=320223
[6] https://patchwork.ozlabs.org/project/gcc/list/?series=297132
[7] http://toolchain.lug-owl.de/laminar/
gccint recommends using ASM_OUTPUT_FUNCTION_LABEL in
ASM_DECLARE_FUNCTION_NAME, but many implementations use
ASM_OUTPUT_LABEL instead. It's inconsistent and prevents changes to
ASM_OUTPUT_FUNCTION_LABEL from affecting the respective targets.
---
gcc/config/aarch64/aarch64.cc | 2 +-
gcc/co
GCC can emit code between the function label and the .LASANPC label,
making the latter unaligned. Some architectures cannot load unaligned
labels directly and require literal pool entries, which is inefficient.
Move the invocation of asan_function_start to
ASM_OUTPUT_FUNCTION_LABEL, which guarant
On Fri, 2024-08-16 at 09:41 +0200, Stefan Schulze Frielinghaus wrote:
> Currently subregs originating from *tf_to_fprx2_0 and *tf_to_fprx2_1
> survive register allocation. This in turn leads to wrong register
> renaming. Keeping the current approach would mean we need two insns
> for
> *tf_to_fpr
On Wed, 2024-09-11 at 12:35 +0200, Stefan Schulze Frielinghaus wrote:
> On Wed, Sep 11, 2024 at 11:47:54AM +0200, Ilya Leoshkevich wrote:
> > On Fri, 2024-08-16 at 09:41 +0200, Stefan Schulze Frielinghaus
> > wrote:
> > > Currently subregs originating from *tf_to_fprx2_0
On Wed, 2024-09-11 at 13:34 +0200, Stefan Schulze Frielinghaus wrote:
> On Wed, Sep 11, 2024 at 01:22:30PM +0200, Ilya Leoshkevich wrote:
> > On Wed, 2024-09-11 at 12:35 +0200, Stefan Schulze Frielinghaus
> > wrote:
> > > On Wed, Sep 11, 2024 at 11:47:54AM +0200, Ilya Leosh
On Wed, 2024-09-11 at 16:44 +0200, Stefan Schulze Frielinghaus wrote:
> On Wed, Sep 11, 2024 at 01:59:48PM +0200, Ilya Leoshkevich wrote:
> > On Wed, 2024-09-11 at 13:34 +0200, Stefan Schulze Frielinghaus
> > wrote:
> > > On Wed, Sep 11, 2024 at 01:22:30PM +0200, Ilya Leosh
> Am 06.09.2019 um 12:34 schrieb Segher Boessenkool
> :
>
> Hi Ilya,
>
> On Thu, Sep 05, 2019 at 01:10:14PM +0200, Ilya Leoshkevich wrote:
>> z13 supports only non-signaling vector comparisons. This means we
>> cannot vectorize LT, LE, GT, GE and LTGT when compil
> Am 06.09.2019 um 14:40 schrieb Richard Sandiford :
>
> Ilya Leoshkevich writes:
>> One of the next patches in series needs to frequently pass short-lived
>> fake rtxes to the back-end in order to test its capabilities. In order
>> to reduce the load on GC, it is b
preparation cleanups.
Patch 6 is an actual implementation.
Path 7 contains new tests, that make sure autovectorized comparisons use
proper instructions.
Ilya Leoshkevich (7):
Allow COND_EXPR and VEC_COND_EXPR condtions to trap
Introduce can_vcond_compare_p function
S/390: Do not use
z13 supports only non-signaling vector comparisons. This means we
cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13. Notify
middle-end about this by using more restrictive operator predicate in
vcond.
gcc/ChangeLog:
2019-08-21 Ilya Leoshkevich
PR target/77918
h takes special care to avoid introducing trapping comparisons
in GIMPLE_COND. They are not allowed, because they would require 3
outgoing edges (then, else and EH), which is awkward to say the least.
Therefore, computations of such conditions should live in their own basic
blocks.
gcc/Chang
s390.md uses a lot of near-identical expanders that perform dispatching
to other expanders based on operand types. Since the following patch
would require even more of these, avoid copy-pasting the code by
generating these expanders using an iterator.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
.
Introduce a function that checks whether back-end supports vector
comparisons with individual rtx codes by matching vcond expander's third
argument with a fake comparison with the corresponding rtx code.
gcc/ChangeLog:
2019-08-27 Ilya Leoshkevich
PR target/77918
* optabs-t
in this and similar cases.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
PR target/77918
* config/s390/2827.md: Add new opcodes.
* config/s390/2964.md: Likewise.
* config/s390/3906.md: Likewise.
* config/s390/8561.md: Likewise.
* config/s390/s
Ilya Leoshkevich
PR target/77918
* config/s390/vector.md (V_HW): Add V1TI in order to make
vcond$a$b generate vcondv1tiv1tf.
---
gcc/config/s390/vector.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/config/s390/vector.md b/gcc/config/s390
gcc/testsuite/ChangeLog:
2019-08-09 Ilya Leoshkevich
PR target/77918
* gcc.target/s390/s390.exp: Enable Fortran tests.
* gcc.target/s390/zvector/autovec-double-quiet-eq.c: New test.
* gcc.target/s390/zvector/autovec-double-quiet-ge.c: New test
> Am 02.07.2019 um 17:34 schrieb Ilya Leoshkevich :
>
> Bootstrap and regtest running on x86_64-redhat-linux, s390x-redhat-linux
> and ppc64le-redhat-linux.
>
> Currently s390 emits the following sequence to store a frame_pc:
>
> a:
> .LASANPC0:
>
&
> Am 03.10.2019 um 14:42 schrieb Richard Sandiford :
>
> Ilya Leoshkevich writes:
>> z13 supports only non-signaling vector comparisons. This means we
>> cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13.
>> However, we cannot express this restriction
> Am 07.10.2019 um 18:27 schrieb Andreas Krebbel :
>
> On 01.10.19 15:27, wrote:
>> gcc/testsuite/ChangeLog:
>>
>> 2019-08-09 Ilya Leoshkevich
>>
>> PR target/77918
>> * gcc.target/s390/s390.exp: Enable Fortran tests.
>>
> Am 07.10.2019 um 18:19 schrieb Andreas Krebbel :
>
> On 01.10.19 15:27, Ilya Leoshkevich wrote:
>> dg-torture.exp=inf-compare-1.c is failing, because (qNaN > +Inf)
>> comparison is compiled to CDB instruction, which does not signal an
>> invalid operation except
Bootstrapped and regtested on s390x-redhat-linux.
gcc/ChangeLog:
2019-10-10 Ilya Leoshkevich
* config/s390/s390.md: Run %a0:DI splitters only after reload.
gcc/testsuite/ChangeLog:
2019-10-10 Ilya Leoshkevich
* gcc.target/s390/load-thread-pointer-once.c: New test
Bootstrapped and regtested on x86_64-redhat-linux.
I noticed this while looking into PR92007.
gcc/ChangeLog:
2019-10-16 Ilya Leoshkevich
* cfgrtl.c (find_partition_fixes): Remove bbs_in_cold_partition.
---
gcc/cfgrtl.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/gcc
ter reload, 3889 edges are threaded.
* When doing jump threading right after combine, 3918 edges are
threaded.
This means this change will not introduce performance regressions.
gcc/ChangeLog:
2019-10-17 Ilya Leoshkevich
PR rtl-optimization/92007
* cfgcleanup.c (thread_ju
2019-11-13 Ilya Leoshkevich
PR rtl-optimization/92430
* cfgcleanup.c (pass_jump_after_combine::gate): New function.
(pass_jump_after_combine::execute): Perform jump threading
unconditionally.
---
gcc/cfgcleanup.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletio
Remove g5 and g6 machines as well as the corresponding lower-level
features.
g5 and g6 were deprecated since gcc 6.1.0 (commit 3bd8520f).
gcc/ChangeLog:
2018-08-02 Ilya Leoshkevich
* common/config/s390/s390-common.c (processor_flags_table):
Remove flags.
* config.gcc: Remove with_arch/with_tune support.
* config/s390/2064.md: Remove
e: we need to support it because
floating point and vector instructions still cannot use relative
addressing.
gcc/ChangeLog:
2018-08-07 Ilya Leoshkevich
* config/s390/s390.c (s390_loadrelative_operand_p):
Remove TARGET_CPU_ZARCH usages.
(s390_rtx_costs): Lik
gcc/ChangeLog:
2018-07-27 Ilya Leoshkevich
* config/s390/s390.c (s390_decompose_constant_pool_ref):
New function.
(s390_decompose_address): Factor out constant pool ref
decomposition.
---
gcc/config/s390/s390.c | 155
Since there is no branch splitting anymore, the loop is no longer
necessary: pool chunkification can be done in one step.
gcc/ChangeLog:
2018-08-13 Ilya Leoshkevich
* config/s390/s390.c (s390_reorg): remove loop
---
gcc/config/s390/s390.c | 69
ot;, "r5", "r6", "r7", "r8",
"r9", "r10", "r12", "r14");
}
results in
internal compiler error: Floating point exception
when building with
-fira-verbose=9 -fdump-rtl-all
gcc/ChangeLog:
2018-0
It was needed only for g5/g6 machines, which are now gone.
gcc/ChangeLog:
2018-08-14 Ilya Leoshkevich
* config/s390/s390.c (s390_decompose_constant_pool_ref):
Remove UNSPEC_LTREL_BASE check.
(annotate_constant_pool_refs): Likewise.
(find_constant_pool_ref
Since there is no branch splitting anymore, the loop is no longer
necessary: pool chunkification can be done in one step.
gcc/ChangeLog:
2018-08-13 Ilya Leoshkevich
* config/s390/s390.c (s390_reorg): remove loop
---
gcc/config/s390/s390.c | 68
S/390 epilogue ends with (parallel [(return) (use %r14)]) instead of
the more usual (return) or (simple_return). This sequence is not
recognized by the conditional return logic in try_optimize_cfg ().
gcc/ChangeLog:
2018-08-28 Ilya Leoshkevich
PR target/80080
* cfgcleanup.c
:
2018-08-27 Ilya Leoshkevich
PR target/80080
* config/s390/s390-passes.def: New file.
* config/s390/s390-protos.h (class rtl_opt_pass): Add forward
declaration.
(make_pass_s390_early_mach): Add declaration.
* config/s390/s390.c
Combine can change basic blocks in a way that they end up containing
a single jump_insn. This creates an opportunity to improve code with
jump threading.
gcc/ChangeLog:
2018-08-28 Ilya Leoshkevich
PR target/80080
* cfgcleanup.c: Make jump pass clonable.
* config/s390
gcc/ChangeLog:
2018-09-05 Ilya Leoshkevich
PR target/80080
* combine.c (rest_of_handle_combine): Perform jump threading.
gcc/testsuite/ChangeLog:
2018-09-05 Ilya Leoshkevich
PR target/80080
* gcc.target/s390/pr80080-4.c: New test.
---
gcc/combine.c
Inhibit constant propagation inlining SYMBOL_REF loads into
UNSPECV_CAS. Even though reload can later undo it, the resulting
code will be less efficient.
gcc/ChangeLog:
2018-09-05 Ilya Leoshkevich
PR target/80080
* config/s390/predicates.md: Add nonsym_memory_operand
> Am 06.09.2018 um 20:11 schrieb Jeff Law :
>
> On 09/05/2018 06:11 AM, Richard Biener wrote:
>> On Wed, Sep 5, 2018 at 2:01 PM Ilya Leoshkevich wrote:
>>>
>>> gcc/ChangeLog:
>>>
>>> 2018-09-05 Ilya Leoshkevich
>
able. Remove redundant
usage of TV_JUMP.
gcc/testsuite/ChangeLog:
2018-09-05 Ilya Leoshkevich
PR target/80080
* gcc.target/s390/pr80080-4.c: New test.
---
gcc/combine.c | 89 +++
gcc/testsuite/gcc.target/s390/pr80080-4.c |
> Am 07.09.2018 um 00:39 schrieb Segher Boessenkool
> :
>
> On Thu, Sep 06, 2018 at 12:11:09PM -0600, Jeff Law wrote:
>> On 09/05/2018 06:11 AM, Richard Biener wrote:
>>> On Wed, Sep 5, 2018 at 2:01 PM Ilya Leoshkevich wrote:
>>>> + /* Combining insn
2018-09-13 Ilya Leoshkevich
* MAINTAINERS: (write after approval): Add myself.
---
MAINTAINERS | 1 +
1 file changed, 1 insertion(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 8c90437180d..f8838fa8e8c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -462,6 +462,7 @@ Georg-Johann Lay
The result looks nicer in the generated pass-instances.def.
gcc/ChangeLog:
2018-09-13 Ilya Leoshkevich
* config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve
formatting.
Obvious fix, committed as r264306.
---
gcc/config/s390/s390-passes.def | 2 +-
1 file changed, 1
> Am 14.09.2018 um 23:35 schrieb Segher Boessenkool
> :
>
> Hi!
>
> On Mon, Sep 10, 2018 at 12:59:19PM +0200, Ilya Leoshkevich wrote:
>> Consider the following RTL:
>>
>> (code_label 11 10 26 4 2 (nil) [1 uses])
>> (note 26 11 12 4 [bb 4] NOTE_INSN_BAS
Hi all,
Could anyone please take a look at
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00237.html ?
Best regards,
Ilya
> Am 17.09.2018 um 19:11 schrieb Segher Boessenkool
> :
>
> On Mon, Sep 17, 2018 at 10:50:58AM +0200, Ilya Leoshkevich wrote:
>>> Am 14.09.2018 um 23:35 schrieb Segher Boessenkool
>>> :
>>> Could you please show generated code before and after this pat
> Am 17.09.2018 um 19:11 schrieb Segher Boessenkool
> :
>
> On Mon, Sep 17, 2018 at 10:50:58AM +0200, Ilya Leoshkevich wrote:
>>> Am 14.09.2018 um 23:35 schrieb Segher Boessenkool
>>> :
>
>>> Why does the existing jump threading not work for you; shoul
> Am 18.09.2018 um 02:57 schrieb Jeff Law :
>
> On 9/5/18 2:34 AM, Ilya Leoshkevich wrote:
>> --- a/gcc/cfgcleanup.c
>> +++ b/gcc/cfgcleanup.c
>> @@ -2624,7 +2624,7 @@ bb_is_just_return (basic_block bb, rtx_insn **ret,
>> rtx_insn **use)
>>
> Am 19.09.2018 um 06:15 schrieb Jeff Law :
>
> On 9/18/18 8:04 AM, Segher Boessenkool wrote:
>> On Wed, Sep 05, 2018 at 10:34:48AM +0200, Ilya Leoshkevich wrote:
>>> S/390 epilogue ends with (parallel [(return) (use %r14)]) instead of
>>> the more usual (
t called for "type"
attribute for some reason?
This patch widens EQ_ATTR_ALT bitmap to 64 bits, making it possible to
gracefully handle up to 64 alternatives. It eliminates the problem with
the 33rd alternative on S/390.
gcc/ChangeLog:
2018-09-18 Ilya Leoshkevich
* gen
%r14. The resulting sequences are recognized by the
conditional return logic in try_optimize_cfg ().
gcc/ChangeLog:
2018-09-19 Ilya Leoshkevich
PR target/80080
* config/s390/s390.md: Do not use PARALLEL RETURN+USE when
returning via %r14.
gcc/testsuite/ChangeLog:
2018-
o 64 bits, making it possible to
gracefully handle up to 64 alternatives. It eliminates the problem with
the 33rd alternative on S/390.
gcc/ChangeLog:
2018-09-18 Ilya Leoshkevich
* genattrtab.c (mk_attr_alt): Use alternative_mask.
(attr_rtx_1): Adjust cachi
> Am 21.09.2018 um 12:50 schrieb Ulrich Weigand :
>
> Ilya Leoshkevich wrote:
>
>> 2018-09-19 Ilya Leoshkevich
>>
>> PR target/80080
>> * config/s390/s390.md: Do not use PARALLEL RETURN+USE when
>> returning via %r14.
>
> T
%r14. The resulting sequences are recognized by the
conditional return logic in try_optimize_cfg ().
gcc/ChangeLog:
2018-09-19 Ilya Leoshkevich
PR target/80080
* config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL
RETURN+USE when returning via %r14.
gcc/test
> Am 24.09.2018 um 13:29 schrieb Richard Sandiford :
>
> Ilya Leoshkevich writes:
>> On S/390 there is a need to support more than 32 instruction
>> alternatives per define_insn. Currently this is not explicitly
>> prohibited or unsupported: MAX_RECOG_AL
es contain HOST_WIDE_INTs. This did not surface on 64-bit
systems, because rtunion is 8 bytes anyway, but on 32-bit systems it's
only 4 bytes. This resulted in out-of-bounds writes and memory
corruptions in genattrtab.
gcc/ChangeLog:
2018-09-24 Ilya Leoshkevich
PR bootstrap/87417
comparisons use proper instructions.
Ilya Leoshkevich (8):
Document signaling for min, max and ltgt operations
Introduce vcond_supported_p hook
S/390: Implement vcond_supported_p hook
S/390: Implement vcond expander for V1TI,V1TF
S/390: Remove code duplication in vec_unordered
S/390: Remove
hook that tells whether target supports certain vector
comparison operations with certain modes.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
* doc/tm.texi (TARGET_VCOND_SUPPORTED_P): Document.
* doc/tm.texi.in (TARGET_VCOND_SUPPORTED_P): Document.
* optabs-tree.c
s (intentionally?) left unspecified, according to
commit 64dd117734d0 ("Unconditionally use MAX_EXPR/MIN_EXPR for MAX/MIN
intrinsics").
So document the status quo.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
PR target/91323
* doc/generic.texi (LTGT_EXPR): Re
z13 supports only non-signaling vector comparisons. This means we
cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13. Notify
middle-end about this using vcond_supported_p hook.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
* config/s390/s390.c (s390_vcond_supported_p
Ilya Leoshkevich
* config/s390/vector.md (vcondv1tiv1tf): New variant of
vcond$a$b expander.
---
gcc/config/s390/vector.md | 15 +++
1 file changed, 15 insertions(+)
diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md
index 0702e1de835..7d90d97b006 100644
s390.md uses a lot of near-identical expanders that perform dispatching
to other expanders based on operand types. Since the following patch
would require even more of these, avoid copy-pasting the code by
generating these expanders using an iterator.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
vec_unordered is vec_ordered plus a negation at the end.
Reuse vec_unordered logic.
gcc/ChangeLog:
2019-08-13 Ilya Leoshkevich
* config/s390/vector.md (vec_unordered): Call
gen_vec_ordered.
---
gcc/config/s390/vector.md | 14 +++---
1 file changed, 7 insertions(+), 7
gcc/testsuite/ChangeLog:
2019-08-09 Ilya Leoshkevich
* gcc.target/s390/s390.exp: Enable Fortran tests.
* gcc.target/s390/zvector/autovec-double-quiet-eq.c: New test.
* gcc.target/s390/zvector/autovec-double-quiet-ge.c: New test.
* gcc.target/s390/zvector
in this and similar cases.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkevich
* config/s390/2827.md: Add new opcodes.
* config/s390/2964.md: Likewise.
* config/s390/3906.md: Likewise.
* config/s390/8561.md: Likewise.
* config/s390/s390-builtins.def (s390_vfch
> Am 20.08.2019 um 12:13 schrieb Richard Sandiford :
>
> Ilya Leoshkevich writes:
>> z13 supports only non-signaling vector comparisons. This means we
>> cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13.
>> However, we cannot express this restriction
> Am 20.08.2019 um 17:04 schrieb Segher Boessenkool
> :
>
> On Tue, Aug 20, 2019 at 11:18:38AM +0200, Ilya Leoshkevich wrote:
>> Currently it's not clear whether or not min, max and ltgt should raise
>> floating point exceptions when dealing with qNaNs.
>>
> Am 20.08.2019 um 17:32 schrieb Segher Boessenkool
> :
>
> On Tue, Aug 20, 2019 at 05:19:46PM +0200, Ilya Leoshkevich wrote:
>>> Am 20.08.2019 um 17:04 schrieb Segher Boessenkool
>>> :
>>> The < and > operators separately already can cause exceptio
> Am 20.08.2019 um 17:50 schrieb Segher Boessenkool
> :
>
> On Tue, Aug 20, 2019 at 11:18:38AM +0200, Ilya Leoshkevich wrote:
>> Currently it's not clear whether or not min, max and ltgt should raise
>> floating point exceptions when dealing with qNaNs.
>>
> Am 20.08.2019 um 13:54 schrieb Richard Sandiford :
>
> Ilya Leoshkevich writes:
>>> Am 20.08.2019 um 12:13 schrieb Richard Sandiford
>>> :
>>>
>>> Ilya Leoshkevich writes:
>>>> z13 supports only non-signaling vector comparisons. Th
> Am 20.08.2019 um 19:13 schrieb Segher Boessenkool
> :
>
> On Tue, Aug 20, 2019 at 06:13:00PM +0200, Ilya Leoshkevich wrote:
>>> Am 20.08.2019 um 17:50 schrieb Segher Boessenkool
>>> :
>>> There is currently no way to say (in trees or gimple or rtl
, is_deleted and is_empty manually.
Split pointer_hash_mark out of pointer_hash in order to support such use
cases. Also make use of it in the existing code where possible.
gcc/ChangeLog:
2019-08-22 Ilya Leoshkevich
* hash-traits.h (struct pointer_hash_mark): New trait.
(Pointer
possible to query supported vcond rtxes and make
use of that for z13.
Patches 5-7 are preparation cleanups.
Patch 8 is an actual implementation.
Path 9 contains new tests, that make sure autovectorized comparisons use
proper instructions.
Ilya Leoshkevich (9):
Document signaling for min, max and
x > y)).
The behavior of MIN/MAX is (intentionally?) left unspecified, according
to https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=263751
("Unconditionally use MAX_EXPR/MIN_EXPR for MAX/MIN intrinsics").
So document the status quo.
gcc/ChangeLog:
2019-08-09 Ilya Leoshkev
.
Introduce a function that checks whether back-end supports vector
comparisons with individual rtx codes by matching vcond expander's third
argument with a fake comparison with the corresponding rtx code.
gcc/ChangeLog:
2019-08-21 Ilya Leoshkevich
* Makefile.in (GTFILES): Add opt
Ilya Leoshkevich
* config/s390/vector.md (vcondv1tiv1tf): New variant of
vcond$a$b expander.
---
gcc/config/s390/vector.md | 15 +++
1 file changed, 15 insertions(+)
diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md
index d7a266c5605..ca5ec0dd3b0 100644
z13 supports only non-signaling vector comparisons. This means we
cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13. Notify
middle-end about this using more restrictive operator predicate in
vcond.
gcc/ChangeLog:
2019-08-21 Ilya Leoshkevich
* config/s390/vector.md
vec_unordered is vec_ordered plus a negation at the end.
Reuse vec_unordered logic.
gcc/ChangeLog:
2019-08-13 Ilya Leoshkevich
* config/s390/vector.md (vec_unordered): Call
gen_vec_ordered.
---
gcc/config/s390/vector.md | 14 +++---
1 file changed, 7 insertions(+), 7
1 - 100 of 298 matches
Mail list logo