Vladimir Yakovlev <vbyakov...@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.yakov...@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