Hi All,

These are three somewhat unrelated patches that I am submitting together for 
convenience
because they came to depend on eachother.

The first, adds optional bound information for the poly_int type itself. 
Building on
Tamars previous work.

The second, is a rework of a lot of the logic for reasoning about VF, as this 
had become
somewhat broken after my previous change, and will become even more broken with 
HSSR.
I think this may also fix sume subtle cases for SELECT_VL, but I am not certain.

The last patch, adds capped iv support to the vectorizer. This is for cases of 
a statically
known data dependency.
This only supports while_ult style masking right now because I dont have great 
access to
other hardware to test on, but it whould be possible to extend it to len based 
controls
and x68_64 style masking.

Each patch and the whole series has been bootstrapped and regression tested on
aarch64-linux-gnu, x86_64-linux-gnu, armhf-linux-gnu, riscv-linux-gnu (under 
QEMU).

Thoughts?
Kind regards,
Alfie

Alfie Richards (3):
  middle-end: poly_int: Use indeterminate bound for optional polyint
    bounds
  vect: fix: Add vect iv increment value reasoning funcitons
  vect: Add option for capped vectorization with full masking.

 gcc/alias.cc                                  |   3 +-
 gcc/config/aarch64/aarch64-modes.def          |   4 +
 gcc/config/aarch64/aarch64.cc                 |  21 +-
 gcc/config/i386/i386.cc                       |   2 +-
 gcc/config/riscv/riscv-vector-costs.cc        |  14 +-
 gcc/config/rs6000/rs6000.cc                   |   2 +-
 gcc/doc/tm.texi                               |   8 -
 gcc/doc/tm.texi.in                            |   2 -
 gcc/emit-rtl.cc                               |   5 +-
 gcc/genmodes.cc                               |  22 ++
 gcc/gimple-fold.cc                            |   8 +-
 gcc/ipa-modref-tree.cc                        |   5 +-
 gcc/poly-int.h                                | 285 +++++++++++++++---
 gcc/target.def                                |  10 -
 .../gcc.target/aarch64/sve/noeffect11.c       |   4 +-
 .../gcc.target/aarch64/sve/pr98119.c          |   7 +-
 .../gcc.target/aarch64/sve/roundeven_1.c      |   2 +-
 .../gcc.target/aarch64/sve/strided_load_5.c   |   5 +-
 .../gcc.target/aarch64/sve/strided_load_6.c   |   3 +-
 .../gcc.target/aarch64/sve/strided_store_6.c  |   6 +-
 .../gcc.target/aarch64/sve/vect-safe-max-vf.c |  51 ++++
 .../aarch64/sve/vect-safe-max-vf2.c           |  50 +++
 gcc/tree-ssa-alias.cc                         |  16 +-
 gcc/tree-ssa-sccvn.cc                         |   8 +-
 gcc/tree-vect-data-refs.cc                    |  16 +-
 gcc/tree-vect-loop-manip.cc                   | 139 +++++++--
 gcc/tree-vect-loop.cc                         | 165 ++++++----
 gcc/tree-vectorizer.h                         | 134 +++++++-
 gcc/value-query.cc                            |  85 +-----
 29 files changed, 794 insertions(+), 288 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-safe-max-vf.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-safe-max-vf2.c


base-commit: dae6f53c3ef0e7945ed7d87d4a39520ccf06b6ba
prerequisite-patch-id: c2cef5e433eac858d2863353082be2a6476881f9
prerequisite-patch-id: 6003add6f4c8828338ab19e45ed94933b8c82180
prerequisite-patch-id: f35d268ebd00c338b0eba88b27e28651f76091bc
prerequisite-patch-id: 809453c829d0ea4861120e5d172773f3124c53d0
prerequisite-patch-id: c8a7e0fd2a1eb9ab8d017c4dc3b9dfd5991a0baf
prerequisite-patch-id: c042f9a425e3dd6dd593a2ebeb78023a0d645df8
prerequisite-patch-id: 4f81ca50785dcde67544fd931d0386a79fd48678
prerequisite-patch-id: fd39f0bc62c0522600f70df5a45aeff06dfb3cae
prerequisite-patch-id: c52bc68b9b59ae7101624c6467059373723d9058
prerequisite-patch-id: 2b402b3202be464e2ca1cc7787f78619daa8bc06
prerequisite-patch-id: 5541260bf6ee42b09cf268cdd937c5b6a2130ae0
prerequisite-patch-id: fa4a72d9054abb62992f4c181c872d800fccc824
prerequisite-patch-id: 13d8aa996402ed08545d130cbdbbfba717f4598a
prerequisite-patch-id: 26d9fb207c487c51ad9d22dffefc752b6955f917
prerequisite-patch-id: bf0b31536a8af918f3d2e3df8bf4c2686928b04c
prerequisite-patch-id: 6090ad2c5949110ba86710764897280e5bf163f3
prerequisite-patch-id: 38aa938af78aa9cba79065ebcbf6af7e8ec98f52
prerequisite-patch-id: 54275cfae1317616e6ef35eca3d2d0bc68bd315c
prerequisite-patch-id: 06b784148b8530c30b521dd384ebca110829b6a9
prerequisite-patch-id: b53cc4f6e5af2ce5cf2fef0729aa723688eb3c70
prerequisite-patch-id: 85f9daeb293ff03865b23c3782c8d8a1ca331505
prerequisite-patch-id: 7961ca2fc6b9b9e1234d675e2ebc2937b07aa9ce
prerequisite-patch-id: 5bb892a379de8b6d87019428a8d39188b916208f
prerequisite-patch-id: d9921d7133947eb2d64d60a98a926dda290ccb71
prerequisite-patch-id: 8a9bf64bb34a37709057cef7e94ee25dda12dae3
prerequisite-patch-id: 14da6712e2612b0651b8cf7b7c40c631b0ef1eac
prerequisite-patch-id: cc475dc5481ad72350bc98772f7f58a6316deb2f
prerequisite-patch-id: f687006d6f650f610858ad7ad1bac90410bcfd98
prerequisite-patch-id: 0ac93a8b61d08abd7df7fe2816f5685201b5bf98
prerequisite-patch-id: 6dea72f29d89a561a622e5efe781e6bddbaa42a4
prerequisite-patch-id: c2d43d537b5b0a4249a90e13191bd00af702c613
prerequisite-patch-id: e8daa9356e740e8aea9c1502e8af316dd6823da8
prerequisite-patch-id: bf8f9892065f59b5b4fbbcfd7a72212da969fa01
prerequisite-patch-id: df9a0e9516756ee5d020018632b60bae80649d68
prerequisite-patch-id: 0be3ad01d622cf2737d7ec5cdd42bbcb34b6e8f0
prerequisite-patch-id: 527d04464db7d1fcff6d2eaa025dc86d98676121
prerequisite-patch-id: 91636af761889cdc8132ad5c458c4a2e863d27e4
prerequisite-patch-id: 7e5ecdf0c160e2056dbf4c4be65c7955424bb469
prerequisite-patch-id: 342b50e972fba4cc3f904067a7bfbb6d75be329c
prerequisite-patch-id: 0ff9a2c3ccbef3c2fc02064ecab36ba1f4c65043
prerequisite-patch-id: 743add208ee3193fb06cdbc0b492e5487d45e7e6
prerequisite-patch-id: ef7a0e5421a33be4784a2e21a95032aad78bf3a1
prerequisite-patch-id: 5aa918c70493f339d94ad4c2739084fd8825da92
prerequisite-patch-id: ea0c765635801cb832e52a91a9c16519f7038dc4
prerequisite-patch-id: db342db7b946042373c49238d74c948d811697d9
prerequisite-patch-id: fbccf2f7ad66ffb979721b94d76536def5cfc327
prerequisite-patch-id: a71f954db0aac7087270ea2e49b335f8af49fb67
prerequisite-patch-id: db50220fac3aa326f2ba68aacd4073e95b7c6807
prerequisite-patch-id: 2c9bf03aca2dac5b6e85657593f8405248823fcc
prerequisite-patch-id: 1c019c4680c61b99e7427c45872de8f47470566a
prerequisite-patch-id: f52db9d1a8c0ed951c1ed075167e789ee2af7ec5
prerequisite-patch-id: 00dfd2cc633efb137e4ef9d954a4ed65f0f63849
prerequisite-patch-id: 9dc1bedabaf2478d24b2f0b37f810f03d7a288f3
prerequisite-patch-id: e5644a37039169415f3eb4909aaa337580532094
prerequisite-patch-id: f11635f1223746ebbb5a4117c13bc475fe7f113c
prerequisite-patch-id: 7c4852a64aea67e4bb140b2381e58cd6eca22ead
prerequisite-patch-id: 080d19feced973918b98f7fb2b40b48de2a3c898
prerequisite-patch-id: d7a6796282219e51d36df0b1d842d95c3249f57c
prerequisite-patch-id: ce1ac5aab6a87c931937bea8a316bf45a0bfe5ea
prerequisite-patch-id: c92cd9d0f48a92cd29d367d15e68d724ff3413b2
prerequisite-patch-id: cd836f61de52ef186535c06115f3bbec9d3ece18
prerequisite-patch-id: 503b72ca9d64f546663d289e528b88c739041b55
prerequisite-patch-id: f03d37a213947f4adf3f2c2223c83c38f86576ba
prerequisite-patch-id: 00f091652efe900f2bcd1b8b4021168a53404592
prerequisite-patch-id: 002d186cf5ec2581c7e84cb8c74c31c27f349176
prerequisite-patch-id: 43d526a9b1d08272c202a63537d54a01065a31e1
prerequisite-patch-id: b1540e31adbd4a0287abea0a19c8d62ace4f40e8
prerequisite-patch-id: 5e8a63059064cbc4ee55ae70466483c68c3bced3
prerequisite-patch-id: fb0b438e44739553ee2998f1b970c71bd7422df6
prerequisite-patch-id: 52cb3dd75a56980b514f6100f068b72b13452598
prerequisite-patch-id: 4392707f796b1fc346d073008354751f6bd9ce23
prerequisite-patch-id: 8fcda99785f521c726d135f671a8dcdebd7b522b
prerequisite-patch-id: 398932deb81e6e928c5e86738842281d7fe7fc22
prerequisite-patch-id: ef6d1852441c4fd4841b9e0535291429b24d22d5
prerequisite-patch-id: 67a32b10cb414f2dd8194268215bcd57bff9ab22
prerequisite-patch-id: c00285176d53ccfe162533f39cf3a4d6d00b3a52
prerequisite-patch-id: e99fbcb392974636431c6da95b3613158f1d5eca
prerequisite-patch-id: 8f62ccaaa635196f26d514bca84ad3b7ef981205
prerequisite-patch-id: 2629bed2fa3312e7f91b2b64f9643abdb8f43cf6
prerequisite-patch-id: 65966a49734eb978dfb9e46a2a70373b2ac34499
prerequisite-patch-id: a0b9aa03931ec550b5a124e9a8cddf15014e590c
prerequisite-patch-id: 14a7e0d5f9efd0afd68621604af80948d625b5c9
prerequisite-patch-id: f813ab3a49c9f085e2da10cd41c1ff52a7eeb648
prerequisite-patch-id: 82f0fbd292e5098ac72f3b69c152ff125170dbe8
prerequisite-patch-id: 90a510eff6444253dd48f78d9c1e09bc2df3d4bf
prerequisite-patch-id: c957fac5b853a35c59feb38a1b535d9d201e5e36
prerequisite-patch-id: 1b076c90c97c2640842b2bb79a44e4b25ffb3a39
prerequisite-patch-id: 62570be1e86467f39fda9960716d6dae0ec49d97
prerequisite-patch-id: ecc04ed6eaee29f1f2a9344641940623ba97f16c
prerequisite-patch-id: 6249c2d7d3bc68f413343246c073d801711c6ecf
prerequisite-patch-id: 1257fa6a7fa78d962467d0351d2d90d7ec7fda7b
prerequisite-patch-id: 2f609edb5ba905a36b571dfb0566dc301b2c4e12
prerequisite-patch-id: 94cb2ea0859a1373289add5ac4a94fc9507c8e81
prerequisite-patch-id: 3f41e7f09a55ee47e10033f8d25a1d84d5dc8f70
prerequisite-patch-id: 81044a8d41c285a22f6fb157ea88a4d1d6772019
prerequisite-patch-id: 093ec7aeacf596b80c99d9e3bd538c2474b78e7e
prerequisite-patch-id: a2c080d87bb444da3435e6a9700054901dbefd8f
prerequisite-patch-id: 76c9b567f87d81fc68495e4f937141e0833c1a0e
prerequisite-patch-id: b20e71caec1fd8b82886f96b4118d98cf7c7fc56
prerequisite-patch-id: 967dd375932312feb67e026771371361178c704a
prerequisite-patch-id: 277341ed0938c427f4d7a24a32d44cb597d1299f
prerequisite-patch-id: cb3b80762496c71f33ca221bebfb707b6b182eee
prerequisite-patch-id: ae1a8d0a5575ab6c3d931662c5a650e1930409fb
prerequisite-patch-id: 66641a033623860287583aeffb657605f69f14b6
prerequisite-patch-id: b7b24ac57dc6c2cd5032216eaf2e45805b8a2edd
prerequisite-patch-id: b533c430f637bfbca5c12dd690198048b3cb2c77
prerequisite-patch-id: ce372343bedf9ecfb7a71872d8f6c6736d0ae9b1
prerequisite-patch-id: 794d3a7600db8a01a33bceee185cfe1ed5d95654
prerequisite-patch-id: 6901b66eb9ea88e4101949598dfd9a49906e3f56
prerequisite-patch-id: bf9231ece9660e20e16b6cdb197e3b2f08072e0f
prerequisite-patch-id: dd78be769db971939b6dc289a9f79f2ea8a0f4c5
prerequisite-patch-id: d31401999995419dfe4bf8641effbe37625f4ea6
prerequisite-patch-id: 650fc7149fed3646b6b3e08ab24ac7d4f5535130
prerequisite-patch-id: 59002bd532357d11144c077b43865ea6493f3a97
prerequisite-patch-id: 64bd6636e927a2c133fb4457adb69b6f2b0e3f20
prerequisite-patch-id: d9d81e0abdb0bc5e064bc7d6fdbe7ffa3347d4d8
prerequisite-patch-id: b3759adf5ade37e49f082989b92c6250651f9e01
prerequisite-patch-id: a1b28624e207cf7b4fea2eca03e6f259e28a289a
prerequisite-patch-id: 8563ca43091fe3353705b32470e8a582f303da4f
prerequisite-patch-id: ca0d0caf478465dfe64867860fdf8cc09b1944ba
prerequisite-patch-id: 7a9b41233049bc3ed1edca3b795eea59b3cc503a
prerequisite-patch-id: 207cfeedf54874d77f014a86aa5f78708482f858
prerequisite-patch-id: b4d32950dd23b2999c2ec424d04b4899c2243df0
prerequisite-patch-id: 1fb4cd200d86064a68fb336ebf3b773df3d63096
prerequisite-patch-id: c4aae89eebace64fc47e5862643880fcaa00dc22
prerequisite-patch-id: a34d93e8f5bfa560b76b99ed43c6cd84c528543b
prerequisite-patch-id: c22fc6eaa1fd0a2cede4729a4fb775f74ccbb768
prerequisite-patch-id: dfe74727f57d37d55de99537113b55c6957ac612
prerequisite-patch-id: 788be800d5740bec8b75f07c5b5a3d610aede53f
prerequisite-patch-id: e4950e545fa1591ffb5d8d1991cfc998809d062f
prerequisite-patch-id: 21c7d898f3655a77e6ab319025ebed4635f3621d
prerequisite-patch-id: aa578d7da2a3be668300b5a92775b9865085adfc
prerequisite-patch-id: 0cb9809f70a5b645f4e5f98144471040628460e3
prerequisite-patch-id: 3601dc27e1b6e40e8f74f2aa8998a2fab0561690
-- 
2.56.0

Reply via email to