aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range.cc
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2022-10-28 12:38:43 +0100
committerAndrew Stubbs <ams@codesourcery.com>2022-10-31 12:20:52 +0000
commitf539029c1ce6fb9163422d1a8b6ac12a2554eaa2 (patch)
tree137b983b21f3fa14ce7244b62d4978753f5623d7 /gcc/gimple-range.cc
parent12a1085644c6c5446eece41d255ca1fd569149d4 (diff)
downloadgcc-f539029c1ce6fb9163422d1a8b6ac12a2554eaa2.zip
gcc-f539029c1ce6fb9163422d1a8b6ac12a2554eaa2.tar.gz
gcc-f539029c1ce6fb9163422d1a8b6ac12a2554eaa2.tar.bz2
amdgcn: multi-size vector reductions
Add support for vector reductions for any vector width by switching iterators and generalising the code slightly. There's no one-instruction way to move an item from lane 31 to lane 0 (63, 15, 7, 3, and 1 are all fine though), and vec_extract is probably fewer cycles anyway, so now we always reduce to an SGPR. gcc/ChangeLog: * config/gcn/gcn-valu.md (V64_SI): Delete iterator. (V64_DI): Likewise. (V64_1REG): Likewise. (V64_INT_1REG): Likewise. (V64_2REG): Likewise. (V64_ALL): Likewise. (V64_FP): Likewise. (reduc_<reduc_op>_scal_<mode>): Use V_ALL. Use gen_vec_extract. (fold_left_plus_<mode>): Use V_FP. (*<reduc_op>_dpp_shr_<mode>): Use V_1REG. (*<reduc_op>_dpp_shr_<mode>): Use V_DI. (*plus_carry_dpp_shr_<mode>): Use V_INT_1REG. (*plus_carry_in_dpp_shr_<mode>): Use V_SI. (*plus_carry_dpp_shr_<mode>): Use V_DI. (mov_from_lane63_<mode>): Delete. (mov_from_lane63_<mode>): Delete. * config/gcn/gcn.cc (gcn_expand_reduc_scalar): Support partial vectors. * config/gcn/gcn.md (unspec): Remove UNSPEC_MOV_FROM_LANE63.
Diffstat (limited to 'gcc/gimple-range.cc')
0 files changed, 0 insertions, 0 deletions