This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Changes in mode switching
Vladimir Yakovlev <vbyakovl23@gmail.com> wrote:
> I discoverd some inaccuracies when tried to implement vzeroupper
> insertion (pr#47440).
>
> First, I made 'transp' as an array of bit vectors rather bitvector
> because it should be own for each mode, otherwise its resetting on
> mode changing kills all modes (and new mode also).
>
> Another changes concern processing of mode switching inside a basic block.
>
> I also added addition argument to EMIT_MODE_SET because it is needed
> me in target dependent changes.
> Make check and bootstrap passed, no fails.
>
> I used compiler
> Target: x86_64-unknown-linux-gnu
> Configured with: ../gcc/configure
> --prefix=/export/users/vbyakovl/workspaces/vzu/install-ref
> --enable-languages=c,c++,fortran --with-arch=corei7 --with-cpu=corei7
> --with-fpmath=sse
>
> Ok for trank.
>
>
> 2012-08-25 Vladimir Yakovlev <vladimir.b.yakovlev@intel.com>
>
> * mode-switching.c (transp): Changed type
> (make_preds_opaque): Added an argument
> (optimize_mode_switching): Some fixes which was done for vzeroupper
> insertion needs.
>
> * config/epiphany/epiphany.h (EMIT_MODE_SET): Added an argument.
>
> * config/i386/i386.h (EMIT_MODE_SET): Added an argument.
>
> * config/sh/sh.h (EMIT_MODE_SET): Added an argument.
I've tried the patch on sh4-unknown-linux-gnu. I see new failures
with it:
Running /exp/ldroot/dodes/LOCAL/trunk/gcc/testsuite/gcc.c-torture/execute/execute.exp ...
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O0
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O1
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O2
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O3 -fomit-frame-pointer -funroll-loops
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O3 -g
FAIL: gcc.c-torture/execute/20021120-1.c execution, -Os
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O2 -flto -fno-use-linker-plugin -flto-partition=none
FAIL: gcc.c-torture/execute/20021120-1.c execution, -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects
FAIL: gcc.c-torture/execute/conversion.c execution, -O0
FAIL: gcc.c-torture/execute/conversion.c execution, -O1
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O2
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O3 -fomit-frame-pointer -funroll-loops
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O3 -g
FAIL: gcc.c-torture/execute/pr28982b.c execution, -Os
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O2 -flto -fno-use-linker-plugin -flto-partition=none
FAIL: gcc.c-torture/execute/pr28982b.c execution, -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects
Running /exp/ldroot/dodes/LOCAL/trunk/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp ...
FAIL: gcc.c-torture/execute/ieee/inf-1.c execution, -O0
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -O0
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -O1
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -O2
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -O3 -g
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -Os
FAIL: gcc.c-torture/execute/ieee/inf-2.c execution, -O2 -flto -fno-use-linker-plugin -flto-partition=none
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -O0
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -O1
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -O2
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -O3 -g
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -Os
FAIL: gcc.c-torture/execute/ieee/inf-3.c execution, -O2 -flto -fno-use-linker-plugin -flto-partition=none
...
With a quick look at gcc.c-torture/execute/20021120-1.c case,
the required mode switching has missed between two comparisons at
if (gd[i] != i * 4 || gf[i] != i)
in main() of 20021120-1.c. I'll look into what is going on.
Regards,
kaz