summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2017-08-23 04:26:17 +0000
committerYonghong Song <yhs@fb.com>2017-08-23 04:26:17 +0000
commitc4ea1010c1be3bb9cfb4772fbd69d02703ad7da6 (patch)
treec9519f6c84ca497cf2fa4348aea926e86b5a1640
parentdc1dbf6ef320175acbdc1206da4b0a176b304449 (diff)
downloadbcm5719-llvm-c4ea1010c1be3bb9cfb4772fbd69d02703ad7da6.tar.gz
bcm5719-llvm-c4ea1010c1be3bb9cfb4772fbd69d02703ad7da6.zip
bpf: add -mcpu=# support for bpf
-mcpu=# will support: . generic: the default insn set . v1: insn set version 1, the same as generic . v2: insn set version 2, version 1 + additional jmp insns . probe: the compiler will probe the underlying kernel to decide proper version of insn set. Examples: $ clang -target bpf -mcpu=v1 -c t.c $ clang -target bpf -mcpu=v2 -c t.c $ clang -target bpf -mcpu=generic -c t.c $ clang -target bpf -mcpu=probe -c t.c $ clang -target bpf -mcpu=v3 -c t.c error: unknown target CPU 'v3' Signed-off-by: Yonghong Song <yhs@fb.com> Acked-by: Alexei Starovoitov <ast@kernel.org> llvm-svn: 311523
-rw-r--r--clang/lib/Basic/Targets/BPF.h12
-rw-r--r--clang/lib/Driver/ToolChains/CommonArgs.cpp2
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets/BPF.h b/clang/lib/Basic/Targets/BPF.h
index 536f5c12635..4dd9cbd9d22 100644
--- a/clang/lib/Basic/Targets/BPF.h
+++ b/clang/lib/Basic/Targets/BPF.h
@@ -76,6 +76,18 @@ public:
return CCCR_OK;
}
}
+
+ bool isValidCPUName(StringRef Name) const override {
+ if (Name == "generic" || Name == "v1" ||
+ Name == "v2" || Name == "probe")
+ return true;
+ return false;
+ }
+
+ bool setCPU(const std::string &Name) override {
+ StringRef CPUName(Name);
+ return isValidCPUName(CPUName);
+ }
};
} // namespace targets
} // namespace clang
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index f4881181181..690f3b3a96b 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -320,6 +320,8 @@ std::string tools::getCPUName(const ArgList &Args, const llvm::Triple &T,
return TargetCPUName;
}
+ case llvm::Triple::bpfel:
+ case llvm::Triple::bpfeb:
case llvm::Triple::sparc:
case llvm::Triple::sparcel:
case llvm::Triple::sparcv9:
OpenPOWER on IntegriCloud