Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 5 additions & 72 deletions python/tvm/target/target.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
# under the License.
"""Target data structure."""
import json
import os
import re
import warnings

Expand Down Expand Up @@ -586,11 +585,6 @@ def hexagon(cpu_ver="v66", **kwargs):
-----------------------------
hvx : int (default: 128)
Size of HVX vector in bytes. Value of 0 disables HVX codegen.
sim_options : str or list of str (default: None)
User defined sim arguments. CPU version defaults to cpu_ver.
Otherwise, separate versions are used for codegen and sim. Not
all allowed cpu strings will be valid, simulator will throw an
error if invalid. Does not affect codegen.
llvm_options : str or list of str (default: None)
User defined compiler arguments.
use_qfloat : bool (default: True for cpu_ver >= v68, False otherwise)
Expand Down Expand Up @@ -629,7 +623,6 @@ def get_arch_version(cpu_ver):
arch_version = get_arch_version(cpu_ver)
config = {
"hvx": 128,
"sim_options": None,
"llvm_options": None,
"use_qfloat": arch_version >= 68,
"use_ieee_fp": False,
Expand All @@ -638,10 +631,12 @@ def get_arch_version(cpu_ver):
config.update(kwargs)

# Warn about obsolete parameter names.
if config.get("sim_args"):
msg = "The keyword parameter 'sim_args' is deprecated, use 'sim_options' instead"
if config.get("sim_args") or config.get("sim_options"):
msg = (
"Setting simulator options in target is deprecated, set environment variable "
"HEXAGON_SIM_ARGS instead"
)
warnings.warn(msg, stacklevel=2)
config.update({"sim_options": config["sim_args"]})
if config.get("llvm_args"):
msg = "The keyword parameter 'llvm_args' is deprecated, use 'llvm_options' instead"
warnings.warn(msg, stacklevel=2)
Expand Down Expand Up @@ -678,65 +673,6 @@ def create_target_features(config):

return target + mcpu + " " + create_target_features(config)

# Simulator options string
def create_sim_options(cpu_ver, config):
"""Create simulator option string."""

def validate_hvx_length(codegen_hvx, sim_options):
if sim_options and "--hvx_length" in sim_options:
# If --hvx_length was specified, check HVX length of sim
# vs codegen
i = sim_options.index("hvx_length") + len("hvx_length") + 1
sim_hvx = sim_options[i : i + 3]
if sim_hvx != str(codegen_hvx):
msg = "sim hvx {} and codegen hvx {} mismatch!".format(sim_hvx, codegen_hvx)
# Set the stacklevel to the tvm.target.hexagon() call.
warnings.warn(msg, stacklevel=4)
elif codegen_hvx != 0:
# If --hvx_length was not given, add it if HVX is enabled
sim_options = sim_options + " " if isinstance(sim_options, str) else ""
sim_options += "--hvx_length " + str(codegen_hvx)
return sim_options or ""

hvx = config["hvx"]
sim_options = config["sim_options"]
if not sim_options:
return cpu_ver + " " + validate_hvx_length(hvx, sim_options)

sim_cpu = cpu_ver + " "

# Add user defined args
if isinstance(sim_options, list):
sim_options = " ".join(sim_options)

# Check for supplied sim cpu version
if "v6" in sim_options:
sim_cpu = ""

# Regex match for allowed cpus
valid_cpu_str_regex = (
r"(?P<pre>--.*\s)?(--m)?"
+ r"(?P<base_version>v6[25678])(?P<sub_version>[a-z])?"
+ r"(?P<l2_size>_[0-9]+)?(?P<rev>_rev[0-9])?\s?(?P<post>--.*)?"
)
m = re.match(valid_cpu_str_regex, sim_options.lower())
if not m:
raise ValueError('Invalid simulator argument string "{}"'.format(sim_options))

# Parse options into correct order
cpu_attr = {x: str(m.groupdict()[x] or "") for x in m.groupdict()}
sim_options = (
cpu_attr["base_version"]
+ cpu_attr["sub_version"]
+ cpu_attr["l2_size"]
+ cpu_attr["rev"]
+ " "
+ cpu_attr["pre"]
+ cpu_attr["post"]
)

return sim_cpu + " " + validate_hvx_length(hvx, sim_options)

# LLVM options string
def create_llvm_options(cpu_ver, config): # pylint: disable=unused-argument
"""Create LLVM options string."""
Expand Down Expand Up @@ -764,9 +700,6 @@ def create_tvm_options(cpu_ver, config): # pylint: disable=unused-argument
opts += " --" + features[k] + "=" + str(config[k])
return opts

# Sim args
os.environ["HEXAGON_SIM_ARGS"] = create_sim_options(cpu_ver, config)

target_str = create_llvm_target(cpu_ver, config)
llvm_str = create_llvm_options(cpu_ver, config)
tvm_str = create_tvm_options(cpu_ver, config)
Expand Down