diff options
author | Xionghu Luo <luoxhu@linux.ibm.com> | 2020-07-12 20:22:56 -0500 |
---|---|---|
committer | Xionghu Luo <luoxhu@linux.ibm.com> | 2020-07-12 20:22:56 -0500 |
commit | 56d78c58c233a358c780571ad6fecbabdcff2407 (patch) | |
tree | fd0a9f62e59f360a0385d50104235e997814a3b7 /gcc/expr.c | |
parent | 466dd1629c699599050f68d2bfee58be9db40aab (diff) | |
download | gcc-56d78c58c233a358c780571ad6fecbabdcff2407.zip gcc-56d78c58c233a358c780571ad6fecbabdcff2407.tar.gz gcc-56d78c58c233a358c780571ad6fecbabdcff2407.tar.bz2 |
rs6000: Define define_insn_and_split to split unspec sldi+or to rldimi
Combine pass could recognize the pattern defined and split it in split1,
this patch could optimize:
21: r130:DI=r133:DI<<0x20
11: {r129:DI=zero_extend(unspec[[r145:DI]] 87);clobber scratch;}
22: r134:DI=r130:DI|r129:DI
to
21: {r149:DI=zero_extend(unspec[[r145:DI]] 87);clobber scratch;}
22: r134:DI=r149:DI&0xffffffff|r133:DI<<0x20
rldimi is generated instead of sldi+or.
gcc/ChangeLog:
2020-07-13 Xionghu Luo <luoxhu@linux.ibm.com>
* config/rs6000/rs6000.md (rotl_unspec): New
define_insn_and_split.
gcc/testsuite/ChangeLog:
2020-07-13 Xionghu Luo <luoxhu@linux.ibm.com>
* gcc.target/powerpc/vector_float.c: New test.
Diffstat (limited to 'gcc/expr.c')
0 files changed, 0 insertions, 0 deletions