This is an archive of the discontinued LLVM Phabricator instance.

[Hexagon] Handling of new HVX flags and target-features
ClosedPublic

Authored by sgundapa on Oct 12 2017, 9:27 AM.

Details

Summary

This patch has the following changes
A new flag "-mhvx-length={64B|128B}" is introduced to specify the length of the vector.
Previously we have used "-mhvx-double" for 128 Bytes. This adds the target-feature "+hvx-length{64|128}b"

The "-mhvx" flag must be provided on command line to enable HVX for Hexagon. If no -mhvx-length flag
is specified, a default length is picked from the arch mentioned in this priority order from either -mhvx=vxx
or -mcpu. For v60 and v62 the default length is 64 Byte. For unknown versions, the length is 128 Byte. The
-mhvx flag adds the target-feature "+hvxv{hvx_version}"

The 64 Byte mode is soon going to be deprecated. A warning is emitted if 64 Byte is enabled. A warning is
still emitted for the default 64 Byte as well. This warning can be suppressed with a -Wno flag.

The "-mhvx-double" and "-mno-hvx-double" flags are deprecated. A warning is emitted if the driver sees
them on commandline. "-mhvx-double" is an alias to "-mhvx-length=128B"

The compilation will error out if -mhvx-length is specified with out an -mhvx/-mhvx= flag

The macro HVX_LENGTH is defined and is set to the length of the vector.
Eg: #define HVX_LENGTH 64

The macro HVX_ARCH is defined and is set to the version of the HVX.
Eg: #define HVX_ARCH 62

Diff Detail

Event Timeline

sgundapa created this revision.Oct 12 2017, 9:27 AM
sgundapa edited the summary of this revision. (Show Details)Oct 12 2017, 9:30 AM
sgundapa edited the summary of this revision. (Show Details)
kparzysz accepted this revision.Oct 18 2017, 9:28 AM
This revision is now accepted and ready to land.Oct 18 2017, 9:28 AM
This revision was automatically updated to reflect the committed changes.