diff options
author | Xi Ruoyao <xry111@xry111.site> | 2024-06-15 18:29:43 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2024-06-27 14:47:57 +0800 |
commit | 94aade062a4ab689abc4c3422c1b901ab0733c19 (patch) | |
tree | 103c78d8f1d4a9c111dc95c35050e20e29a318fb /gcc/tree-vectorizer.h | |
parent | b8153b5417bed02f47354a14ad36100785dfdc47 (diff) | |
download | gcc-94aade062a4ab689abc4c3422c1b901ab0733c19.zip gcc-94aade062a4ab689abc4c3422c1b901ab0733c19.tar.gz gcc-94aade062a4ab689abc4c3422c1b901ab0733c19.tar.bz2 |
LoongArch: Tweak IOR rtx_cost for bstrins
Consider
c &= 0xfff;
a &= ~0xfff;
b &= ~0xfff;
a |= c;
b |= c;
This can be done with 2 bstrins instructions. But we need to recognize
it in loongarch_rtx_costs or the compiler will not propagate "c & 0xfff"
forward.
gcc/ChangeLog:
* config/loongarch/loongarch.cc:
(loongarch_use_bstrins_for_ior_with_mask): Split the main logic
into ...
(loongarch_use_bstrins_for_ior_with_mask_1): ... here.
(loongarch_rtx_costs): Special case for IOR those can be
implemented with bstrins.
gcc/testsuite/ChangeLog;
* gcc.target/loongarch/bstrins-3.c: New test.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions