Support autovectorization of diamond loops.

This CL enables predicated autovectorization of loops with
control flow, currently only for simple diamond pattern ones:

                header------------------+
                  |                     |
             diamond_hif                |
                /   \                   |
     diamond_true  diamond_false        |
                \   /                   |
              back_edge                 |
                  |                     |
                  +---------------------+

Original author: Artem Serov <Artem.Serov@linaro.org>

Test: ./art/test.py --host --optimizing --jit
Test: ./art/test.py --target --optimizing --jit
Test: 661-checker-simd-cf-loops.

Test: target tests on arm64 with SVE (for details see
      art/test/README.arm_fvp).

Change-Id: I8dbc266278b4ab074b831d6c224f02024030cc8a
26 files changed