Hi Jakub,
在 2024/11/22 16:18, Jakub Jelinek 写道:
> Hi!
>
> These tests use the K&R function style definitions or pass arguments
> to () functions.
> It seemed easiest to just use -std=gnu17 for all of those.
Thanks for fixing! I slightly prefer passing -Wno-old-style-definition
instead as the te
Hi Jakub,
Thanks for doing this!
在 2024/11/7 20:16, Jakub Jelinek 写道:
> Hi!
>
> The following patch on top of the
> https://gcc.gnu.org/pipermail/gcc-patches/2024-November/667949.html
> patch adds rs6000 part of the support (the only other target I'm aware of
> which clearly has red zone as well
Hi Carl,
在 2024/10/1 23:28, Carl Love 写道:
>
> GCC maintainers:
>
> Version 2, added the argument changes for the__builtin_vsx_uns_double[e | o |
> h | l ]_v4si built-ins. Added support to the vector {un,}signed int to vector
> float builtins so they are supported using Altivec instructions if
Hi Carl,
在 2024/10/1 23:27, Carl Love 写道:
>
>
> GCC maintainers:
>
> Version 2: Fixed the wording in the changelog per the feedback. With this
> change the patch was approved by Kewen.
>
> The patch removed the built-in __builtin_vsx_xvcvuxwdp as it is covered by
> the overloaded vec_doubleo
Hi Carl,
在 2024/10/1 23:27, Carl Love 写道:
>
> GCC maintainers:
>
> version 2, added the reference to the patch where the removal of the
> built-ins was missed. Note, patch was approved by Kewen with this change.
>
> The following patch removes two redundant built-ins __builtin_vsx_vperm_8hi
Hi Carl,
在 2024/10/1 23:27, Carl Love 写道:
>
>
> GCC maintainers:
>
> Version 2, fixed the changelog, updated the wording in the documentation and
> updated the argument types in the vsx-builtin-3.c test file.
>
> The following patch adds missing test cases for the overloaded vec_perm
> built
Hi Carl,
在 2024/10/3 23:11, Carl Love 写道:
> GCC maintainers:
>
> The builtins-1-10-runnable.c has the debugging inadvertently enabled. The
> test uses #ifdef to enable/disable the debugging. Unfortunately, the #define
> DEBUG was set to 0 to disable debugging and enable the call to abort in ca
Hi,
This patch is to adjust define_insn altivec_v{add,sub}uqm
with standard names, as the associated test case shows, w/o
this patch, it ends up with scalar {add,subf}c/{add,subf}e,
the standard names help to exploit v{add,sub}uqm.
Bootstrapped and regtested on ppc64-linux P8/P9 and
ppc64le-linux
Hi,
As the associated test case shows, signbit generated assembly
is sub-optimal for _Float128 argument from memory on P8 LE.
On P8 LE, p8swap pass puts an explicit AND -16 on the memory,
which causes mode_dependent_address_p considers it's invalid
to change its mode and combine fails to make use
Hi,
When making a patch to adjust VECTOR_P8_VECTOR rs6000_vector
enum, I noticed that V1TImode's mode attribute in VI_unit
VECTOR_UNIT_ALTIVEC_P (V1TImode) is never true, since
VECTOR_UNIT_ALTIVEC_P checks if vector_unit[V1TImode] is
equal to VECTOR_ALTIVEC, but vector_unit[V1TImode] can only
be V
Hi,
When making patch to replace TARGET_P8_VECTOR, I noticed
for *eqv3_internal1 unlike the other logical
operations, we only exploited the vsx version. I think it
is an oversight, this patch is to consider veqv as well.
Bootstrapped and regtested on ppc64-linux P8/P9 and
ppc64le-linux P9/P10 tw
Hi,
When I was making a patch to rework TARGET_P8_VECTOR, I
noticed that there are some redundant checks and dead code
related to TARGET_DIRECT_MOVE, so I made this patch as one
separated preparatory patch, it consists of:
- Check either TARGET_DIRECT_MOVE or TARGET_P8_VECTOR only
according
Hi,
When working to get rid of mask bit OPTION_MASK_P8_VECTOR,
I noticed that the check on ISA_3_0_MASKS_IEEE is actually
to check TARGET_P9_VECTOR, since we check all three mask
bits together and p9 vector guarantees p8 vector and vsx
should be enabled. So this patch is to adjust this first
as p
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
This patch is to remove LONG_DOUBLE_TYPE_SIZE and
rename macros {FLOAT,DOUBLE}_TYPE_SIZE with prefix
BFIN_ as some macro defines want to use them, keeping
them can have better code readability.
gcc/ChangeLog:
* config/bfin/bfin.h (FLOAT_TYPE_SIZE): Rename to ...
(BFIN_FLOAT_TYPE_S
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in s390 port, and add new port specific hook
implementation s390_c_mode_for_floating_type.
gcc/ChangeLog:
* config/s390/s390.cc (s390_c_mode_for_floating_type): New function.
(TARGET_C_MODE_FOR_FLOATING_TYPE): New m
This is to add new port specific hook implementation
mips_c_mode_for_floating_type, remove macros FLOAT_TYPE_SIZE
and DOUBLE_TYPE_SIZE, rename LONG_DOUBLE_TYPE_SIZE to
MIPS_LONG_DOUBLE_TYPE_SIZE since we poison LONG_DOUBLE_TYPE_SIZE
but some subtarget wants to redefine it and some macro defines
nee
This is to add new port specific hook implementation
loongarch_c_mode_for_floating_type, remove macro
defines for FLOAT_TYPE_SIZE and DOUBLE_TYPE_SIZE, and
rename LONG_DOUBLE_TYPE_SIZE to LA_LONG_DOUBLE_TYPE_SIZE
as we poison LONG_DOUBLE_TYPE_SIZE but some macros need
LONG_DOUBLE_TYPE_SIZE.
gcc/Ch
This is to add new port specific hook implementation
m68k_c_mode_for_floating_type, remove macro
LONG_DOUBLE_TYPE_SIZE and add new macro
LONG_DOUBLE_TYPE_MODE which some subtarget can redefine.
gcc/ChangeLog:
* config/m68k/m68k.cc (m68k_c_mode_for_floating_type): New function.
(TA
This is to remove macro LONG_DOUBLE_TYPE_SIZE define in
sh port, and add new port specific hook implementation
sh_c_mode_for_floating_type.
gcc/ChangeLog:
* config/sh/sh.cc (sh_c_mode_for_floating_type): New function.
(TARGET_C_MODE_FOR_FLOATING_TYPE): New macro.
* config/
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in aarch64 port, and add new port specific hook
implementation aarch64_c_mode_for_floating_type.
gcc/ChangeLog:
* config/aarch64/aarch64.cc (aarch64_c_mode_for_floating_type):
New function.
(TARGET_C_MODE_FO
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in avr port, and add new port specific hook
implementation avr_c_mode_for_floating_type.
gcc/ChangeLog:
* config/avr/avr.cc (avr_c_mode_for_floating_type): New
function.
(TARGET_C_MODE_FOR_FLOATING_TYPE): Ne
This is to add new port specific hook implementation
pa_c_mode_for_floating_type, as we remove defines in
defaults.h for {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE, this
also defines them in pa.h but with PA_ prefix since
we poison {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE.
gcc/ChangeLog:
* config/pa/pa.cc
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in ia64 port, and add new port specific hook
implementation ia64_c_mode_for_floating_type.
gcc/ChangeLog:
* config/ia64/ia64.cc (ia64_c_mode_for_floating_type): New
function.
(TARGET_C_MODE_FOR_FLOATING_TYPE
This is to remove macro LONG_DOUBLE_TYPE_SIZE define
in pdp11 port.
gcc/ChangeLog:
* config/pdp11/pdp11.h (LONG_DOUBLE_TYPE_SIZE): Remove.
---
gcc/config/pdp11/pdp11.h | 11 ---
1 file changed, 11 deletions(-)
diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h
inde
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in alpha port, and add new port specific hook
implementation alpha_c_mode_for_floating_type.
gcc/ChangeLog:
* config/alpha/alpha.cc (alpha_c_mode_for_floating_type): New
function.
(TARGET_C_MODE_FOR_FLOATING
This is to add new port specific hook implementation
h8300_c_mode_for_floating_type, remove useless macro
defines for {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE and add
new macro DOUBLE_TYPE_MODE which some subtarget can
redefine.
gcc/ChangeLog:
* config/h8300/h8300.cc (h8300_c_mode_for_floating_ty
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in i386 port, and add new port specific hook
implementation ix86_c_mode_for_floating_type.
gcc/ChangeLog:
* config/i386/i386.cc (ix86_c_mode_for_floating_type): New
function.
(TARGET_C_MODE_FOR_FLOATING_TYPE
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in xtensa port.
gcc/ChangeLog:
* config/xtensa/xtensa.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/xtensa/xtensa.h | 3 ---
1 file changed, 3
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in rx port, and add new port specific hook
implementation rx_c_mode_for_floating_type.
gcc/ChangeLog:
* config/rx/rx.cc (rx_c_mode_for_floating_type): New function.
(TARGET_C_MODE_FOR_FLOATING_TYPE): New macro.
This is to add new port specific hook implementation
sparc_c_mode_for_floating_type, remove macros
{FLOAT,DOUBLE}_TYPE_SIZE defines and rename
LONG_DOUBLE_TYPE_SIZE to SPARC_LONG_DOUBLE_TYPE_SIZE
as we poison LONG_DOUBLE_TYPE_SIZE and some subtargets
still want to re-define it.
gcc/ChangeLog:
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in nvptx port.
gcc/ChangeLog:
* config/nvptx/nvptx.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/nvptx/nvptx.h | 3 ---
1 file changed, 3 delet
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in stormy16 port.
gcc/ChangeLog:
* config/stormy16/stormy16.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/stormy16/stormy16.h | 6 --
1 fil
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in mmix port.
gcc/ChangeLog:
* config/mmix/mmix.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/mmix/mmix.h | 4
1 file changed, 4 deletions
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in pru port.
gcc/ChangeLog:
* config/pru/pru.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/pru/pru.h | 3 ---
1 file changed, 3 deletions(-)
d
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in microblaze port.
gcc/ChangeLog:
* config/microblaze/microblaze.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/microblaze/microblaze.h | 3 ---
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in rl78 port, and add new port specific hook
implementation rl78_c_mode_for_floating_type.
gcc/ChangeLog:
* config/rl78/rl78.cc (TARGET_C_MODE_FOR_FLOATING_TYPE): New macro.
(rl78_c_mode_for_floating_type): New func
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in nios2 port.
gcc/ChangeLog:
* config/nios2/nios2.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/nios2/nios2.h | 3 ---
1 file changed, 3 delet
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in visium port.
gcc/ChangeLog:
* config/visium/visium.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/visium/visium.h | 29 ++
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in gcn port.
gcc/ChangeLog:
* config/gcn/gcn.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/gcn/gcn.h | 3 ---
1 file changed, 3 deletions(-)
d
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in m32c port.
gcc/ChangeLog:
* config/m32c/m32c.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/m32c/m32c.h | 4
1 file changed, 4 deletions
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in riscv port, and add new port specific hook
implementation riscv_c_mode_for_floating_type.
gcc/ChangeLog:
* config/riscv/riscv.cc (riscv_c_mode_for_floating_type): New function.
(TARGET_C_MODE_FOR_FLOATING_TYPE):
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in nds32 port.
gcc/ChangeLog:
* config/nds32/nds32.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/nds32/nds32.h | 4
1 file changed, 4 dele
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in ft32 port.
gcc/ChangeLog:
* config/ft32/ft32.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/ft32/ft32.h | 4
1 file changed, 4 deletions
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in m32r port.
gcc/ChangeLog:
* config/m32r/m32r.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/m32r/m32r.h | 3 ---
1 file changed, 3 deletions(
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in arc port.
gcc/ChangeLog:
* config/arc/arc.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/arc/arc.h | 3 ---
1 file changed, 3 deletions(-)
d
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in rs6000 port, and add new port specific hook
implementation rs6000_c_mode_for_floating_type.
gcc/ChangeLog:
* config/rs6000/rs6000.cc (TARGET_C_MODE_FOR_FLOATING_TYPE): New macro.
(rs6000_c_mode_for_floating_type)
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in lm32 port.
gcc/ChangeLog:
* config/lm32/lm32.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/lm32/lm32.h | 4
1 file changed, 4 deletions
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in fr30 port.
gcc/ChangeLog:
* config/fr30/fr30.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/fr30/fr30.h | 3 ---
1 file changed, 3 deletions(
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in bpf port.
gcc/ChangeLog:
* config/bpf/bpf.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/bpf/bpf.h | 3 ---
1 file changed, 3 deletions(-)
d
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in iq2000 port.
gcc/ChangeLog:
* config/iq2000/iq2000.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/iq2000/iq2000.h | 3 ---
1 file changed, 3
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in or1k port.
gcc/ChangeLog:
* config/or1k/or1k.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/or1k/or1k.h | 3 ---
1 file changed, 3 deletions(
Currently how we determine which mode will be used for a
floating point type is that for a given type precision
(size) call mode_for_size to get the first mode which has
this size in the specified class. On Powerpc, we have
three modes (TF/KF/IF) having the same mode precision 128
(see[1]), so the
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in frv port.
gcc/ChangeLog:
* config/frv/frv.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/frv/frv.h | 3 ---
1 file changed, 3 deletions(-)
d
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in moxie port.
gcc/ChangeLog:
* config/moxie/moxie.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/moxie/moxie.h | 4
1 file changed, 4 dele
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. Unlike the other FEs, for the
uses in recordin
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in msp430 port.
gcc/ChangeLog:
* config/msp430/msp430.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/msp430/msp430.h | 4
1 file changed, 4
This is to remove macros {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
defines in epiphany port.
gcc/ChangeLog:
* config/epiphany/epiphany.h (FLOAT_TYPE_SIZE): Remove.
(DOUBLE_TYPE_SIZE): Likewise.
(LONG_DOUBLE_TYPE_SIZE): Likewise.
---
gcc/config/epiphany/epiphany.h | 3 ---
1 file c
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
RFC/PATCH, this is bootstrapped
& regtested on powerpc64{,le}-linux-gnu with all langs
on, cross cc1 built well for affected ports at least
one available triple.
Kewen Lin (52):
ada: Replace use of LONG_DOUBLE_TYPE_SIZE
d: Replace use of LONG_DOUBLE_TYPE_SIZE
fortran: Replace uses of
Joseph pointed out "floating types should have their mode,
not a poorly defined precision value" in the discussion[1],
as he and Richi suggested, the existing macros
{FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE will be replaced with a
hook mode_for_floating_type. To be prepared for that, this
patch is to repl
For VMAT_CONTIGUOUS_REVERSE, the transform code in function
vectorizable_store generates a VEC_PERM_EXPR stmt before
storing, but it's never considered in costing.
This patch is to make it consider vec_perm in costing, it
adjusts the order of transform code a bit to make it easy
to early return fo
This patch is to eventually get rid of vect_model_store_cost,
it adjusts the costing for the remaining memory access types
VMAT_CONTIGUOUS{, _DOWN, _REVERSE} by moving costing close
to the transform code. Note that in vect_model_store_cost,
there is one special handling for vectorizing a store int
This patch adjusts the cost handling on VMAT_GATHER_SCATTER
in function vectorizable_store (all three cases), then we
won't depend on vect_model_load_store for its costing any
more. This patch shouldn't have any functional changes.
gcc/ChangeLog:
* tree-vect-stmts.cc (vect_model_store_co
This patch adjusts the cost handling on VMAT_CONTIGUOUS_PERMUTE
in function vectorizable_store. We don't call function
vect_model_store_cost for it any more. It's the case of
interleaving stores, so it skips all stmts excepting for
first_stmt_info, consider the whole group when costing
first_stmt
This costing adjustment patch series exposes one issue in
aarch64 specific costing adjustment for STP sequence. It
causes the below test cases to fail:
- gcc/testsuite/gcc.target/aarch64/ldp_stp_15.c
- gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
- gcc/testsuite/gcc.target/aarch64/ldp_stp_
When making/testing patches to move costing next to the
transform code for vectorizable_store, some ICEs got
exposed when I further refined the costing handlings on
VMAT_ELEMENTWISE. The apparent cause is triggering the
assertion in rs6000 specific function for costing
rs6000_builtin_vectorization
This patch adjusts the cost handling on VMAT_ELEMENTWISE
and VMAT_STRIDED_SLP in function vectorizable_store. We
don't call function vect_model_store_cost for them any more.
Like what we improved for PR82255 on load side, this change
helps us to get rid of unnecessary vec_to_scalar costing
for so
This patch adjusts the cost handling on VMAT_LOAD_STORE_LANES
in function vectorizable_store. We don't call function
vect_model_store_cost for it any more. It's the case of
interleaving stores, so it skips all stmts excepting for
first_stmt_info, consider the whole group when costing
first_stmt_i
This patch is to simplify the costing on the case
vectorizable_scan_store without calling function
vect_model_store_cost any more.
I considered if moving the costing into function
vectorizable_scan_store is a good idea, for doing
that, we have to pass several variables down which
are only used for
cost model, I also verified the whole patch
series was neutral for SPEC2017 int/fp on Power9 at O2,
O3 and Ofast separately.
[1] https://gcc.gnu.org/pipermail/gcc-patches/2023-June/621460.html
Kewen Lin (10):
vect: Ensure vect store is supported for some VMAT_ELEMENTWISE case
vect: Move
This patch is an initial patch to move costing next to the
transform, it still adopts vect_model_store_cost for costing
but moves and duplicates it down according to the handlings
of different vect_memory_access_types or some special
handling need, hope it can make the subsequent patches easy
to re
rified the whole patch
series was neutral for SPEC2017 int/fp on Power9 at O2,
O3 and Ofast separately.
[1] https://gcc.gnu.org/pipermail/gcc-patches/2021-January/563624.html
Kewen Lin (9):
vect: Move vect_model_load_cost next to the transform in vectorizable_load
vect: Adjust vectorizable_lo
This patch adjusts the cost handling on
VMAT_CONTIGUOUS_REVERSE in function vectorizable_load. We
don't call function vect_model_load_cost for it any more.
This change makes us not miscount some required vector
permutation as the associated test case shows.
gcc/ChangeLog:
* tree-vect-st
This patch adjusts the cost handling on VMAT_GATHER_SCATTER
in function vectorizable_load. We don't call function
vect_model_load_cost for it any more.
It's mainly for gather loads with IFN or emulated gather
loads, it follows the handlings in function
vect_model_load_cost. This patch shouldn't
ew test.
2023-06-13 Bill Schmidt
Kewen Lin
---
.../vect/costmodel/ppc/costmodel-pr82255.c| 31
gcc/tree-vect-stmts.cc| 170 +++---
2 files changed, 134 insertions(+), 67 deletions(-)
create mode 100644 gcc/testsuite/gcc.dg/vect/cos
This patch adjusts the cost handling on
VMAT_CONTIGUOUS_PERMUTE in function vectorizable_load. We
don't call function vect_model_load_cost for it any more.
As the affected test case gcc.target/i386/pr70021.c shows,
the previous costing can under-cost the total generated
vector loads as for VMAT_C
This patch adjusts the cost handling on VMAT_CONTIGUOUS in
function vectorizable_load. We don't call function
vect_model_load_cost for it any more. It removes function
vect_model_load_cost which becomes useless and unreachable
now.
gcc/ChangeLog:
* tree-vect-stmts.cc (vect_model_load_co
This patch adds one extra argument cost_vec to function
vect_build_gather_load_calls, so that we can do costing
next to the tranform in vect_build_gather_load_calls.
For now, the implementation just follows the handlings in
vect_model_load_cost, it isn't so good, so placing one
FIXME for any furthe
This patch adjusts the cost handling on VMAT_INVARIANT in
function vectorizable_load. We don't call function
vect_model_load_cost for it any more.
To make the costing on VMAT_INVARIANT better, this patch is
to query hoist_defs_of_uses for hoisting decision, and add
costs for different "where" bas
This patch adjusts the cost handling on
VMAT_LOAD_STORE_LANES in function vectorizable_load. We
don't call function vect_model_load_cost for it any more.
It follows what we do in the function vect_model_load_cost,
and shouldn't have any functional changes.
gcc/ChangeLog:
* tree-vect-stm
This patch is an initial patch to move costing next to the
transform, it still adopts vect_model_load_cost for costing
but moves and duplicates it down according to the handlings
of different vect_memory_access_types, hope it can make the
subsequent patches easy to review. This patch should not
ha
The current handlings in rs6000_emit_vector_compare is a bit
complicated to me, especially after we emit vector float
comparison insn with the given code directly. So it's better
to refactor the handlings of vector integer comparison here.
This is part 4, it's to rework the handlings on GE/GEU/LE
The current handlings in rs6000_emit_vector_compare is a bit
complicated to me, especially after we emit vector float
comparison insn with the given code directly. So it's better
to refactor the handlings of vector integer comparison here.
This is part 1, it's to remove the helper function
rs6000
All kinds of vector float comparison operators have been
supported in a rtl comparison pattern as vector.md, we can
just emit an rtx comparison insn with the given comparison
operator in function rs6000_emit_vector_compare instead of
checking and handling the reverse condition cases.
This is part
All kinds of vector float comparison operators have been
supported in a rtl comparison pattern as vector.md, we can
just emit an rtx comparison insn with the given comparison
operator in function rs6000_emit_vector_compare instead of
checking and handling the reverse condition cases.
This is part
The current handlings in rs6000_emit_vector_compare is a bit
complicated to me, especially after we emit vector float
comparison insn with the given code directly. So it's better
to refactor the handlings of vector integer comparison here.
This is part 3, it's to refactor the handlings on NE.
Thi
All kinds of vector float comparison operators have been
supported in a rtl comparison pattern as vector.md, we can
just emit an rtx comparison insn with the given comparison
operator in function rs6000_emit_vector_compare instead of
checking and handling the reverse condition cases.
This is part
The current handlings in rs6000_emit_vector_compare is a bit
complicated to me, especially after we emit vector float
comparison insn with the given code directly. So it's better
to refactor the handlings of vector integer comparison here.
This is part 5, it's to refactor all the handlings of vec
The current handlings in rs6000_emit_vector_compare is a bit
complicated to me, especially after we emit vector float
comparison insn with the given code directly. So it's better
to refactor the handlings of vector integer comparison here.
This is part 2, it's to refactor the handlings on LT and
All kinds of vector float comparison operators have been
supported in a rtl comparison pattern as vector.md, we can
just emit an rtx comparison insn with the given comparison
operator in function rs6000_emit_vector_compare instead of
checking and handling the reverse condition cases.
This is part
22-November/606375.html
[2] https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606376.html
[3] https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606504.html
[4] https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606506.html
Kewen Lin (9):
rs6000: Rework vector float comparison i
This patch is to fix some non-robust split conditions in some
define_insn_and_splits, to make each of them applied on top of
the corresponding condition for define_insn part, otherwise the
splitting could perform unexpectedly.
gcc/ChangeLog:
* config/csky/csky.md (*cskyv2_adddi3, *ck801_a
This patch is to fix some non-robust split conditions in some
define_insn_and_splits, to make each of them applied on top of
the corresponding condition for define_insn part, otherwise the
splitting could perform unexpectedly.
gcc/ChangeLog:
* config/sh/sh.md (call_pcrel, call_value_pcrel
This patch is to fix some non-robust split conditions in some
define_insn_and_splits, to make each of them applied on top of
the corresponding condition for define_insn part, otherwise the
splitting could perform unexpectedly.
gcc/ChangeLog:
* config/mips/mips.md (*udivmod4, udivmod4_mips
1 - 100 of 125 matches
Mail list logo