<div dir="ltr">Hi Artyom,<div><br></div><div>I have reverted this in r248173 because the pre-commmit review was not completed.</div><div><br></div><div>Cheers,</div><div><br></div><div>James</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, 21 Sep 2015 at 06:20 Artyom Skrobov via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: askrobov<br>
Date: Mon Sep 21 08:19:25 2015<br>
New Revision: 248154<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=248154&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=248154&view=rev</a><br>
Log:<br>
[ARM] Handle +t2dsp feature as an ArchExtKind in ARMTargetParser.def<br>
<br>
Currently, the availability of DSP instructions (ACLE 6.4.7) is handled in<br>
a hand-rolled tricky condition block in lib/Basic/Targets.cpp, with a FIXME:<br>
attached.<br>
<br>
<a href="http://reviews.llvm.org/D12937" rel="noreferrer" target="_blank">http://reviews.llvm.org/D12937</a> moved the handling of +t2dsp over to<br>
ARMTargetParser.def in LLVM, to be in line with other architecture extensions.<br>
<br>
This is the corresponding patch to clang, to clear the FIXME: and update<br>
the tests.<br>
<br>
Differential Revision: <a href="http://reviews.llvm.org/D12938" rel="noreferrer" target="_blank">http://reviews.llvm.org/D12938</a><br>
<br>
<br>
Modified:<br>
    cfe/trunk/lib/Basic/Targets.cpp<br>
    cfe/trunk/test/CodeGen/arm-target-features.c<br>
<br>
Modified: cfe/trunk/lib/Basic/Targets.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=248154&r1=248153&r2=248154&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=248154&r1=248153&r2=248154&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Basic/Targets.cpp (original)<br>
+++ cfe/trunk/lib/Basic/Targets.cpp Mon Sep 21 08:19:25 2015<br>
@@ -4121,6 +4121,7 @@ class ARMTargetInfo : public TargetInfo<br>
<br>
   unsigned CRC : 1;<br>
   unsigned Crypto : 1;<br>
+  unsigned T2DSP : 1;<br>
   unsigned Unaligned : 1;<br>
<br>
   enum {<br>
@@ -4472,6 +4473,7 @@ public:<br>
     FPU = 0;<br>
     CRC = 0;<br>
     Crypto = 0;<br>
+    T2DSP = 0;<br>
     Unaligned = 1;<br>
     SoftFloat = SoftFloatABI = false;<br>
     HWDiv = 0;<br>
@@ -4507,6 +4509,8 @@ public:<br>
         CRC = 1;<br>
       } else if (Feature == "+crypto") {<br>
         Crypto = 1;<br>
+      } else if (Feature == "+t2dsp") {<br>
+        T2DSP = 1;<br>
       } else if (Feature == "+fp-only-sp") {<br>
         HW_FP_remove |= HW_FP_DP | HW_FP_HP;<br>
       } else if (Feature == "+strict-align") {<br>
@@ -4743,11 +4747,7 @@ public:<br>
<br>
     // ACLE 6.4.7 DSP instructions<br>
     bool hasDSP = false;<br>
-    bool is5EOrAbove = (ArchVersion >= 6 ||<br>
-                       (ArchVersion == 5 && CPUAttr.count('E')));<br>
-    // FIXME: We are not getting all 32-bit ARM architectures<br>
-    bool is32Bit = (!isThumb() || supportsThumb2());<br>
-    if (is5EOrAbove && is32Bit && (CPUProfile != "M" || CPUAttr  == "7EM")) {<br>
+    if (T2DSP) {<br>
       Builder.defineMacro("__ARM_FEATURE_DSP", "1");<br>
       hasDSP = true;<br>
     }<br>
<br>
Modified: cfe/trunk/test/CodeGen/arm-target-features.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-target-features.c?rev=248154&r1=248153&r2=248154&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-target-features.c?rev=248154&r1=248153&r2=248154&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGen/arm-target-features.c (original)<br>
+++ cfe/trunk/test/CodeGen/arm-target-features.c Mon Sep 21 08:19:25 2015<br>
@@ -1,15 +1,15 @@<br>
 // REQUIRES: arm-registered-target<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu cortex-a8 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3<br>
-// CHECK-VFP3: "target-features"="+neon,+vfp3"<br>
+// CHECK-VFP3: "target-features"="+neon,+t2dsp,+vfp3"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-a9 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-FP16<br>
-// CHECK-VFP3-FP16: "target-features"="+fp16,+neon,+vfp3"<br>
+// CHECK-VFP3-FP16: "target-features"="+fp16,+neon,+t2dsp,+vfp3"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu cortex-a5 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4<br>
-// CHECK-VFP4: "target-features"="+neon,+vfp4"<br>
+// CHECK-VFP4: "target-features"="+neon,+t2dsp,+vfp4"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu cortex-a7 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV<br>
@@ -18,39 +18,41 @@<br>
 // RUN: %clang_cc1 -triple armv7-linux-gnueabihf -target-cpu cortex-a17 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV<br>
 // RUN: %clang_cc1 -triple thumbv7s-linux-gnueabi -target-cpu swift -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu krait -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV<br>
-// CHECK-VFP4-DIV: "target-features"="+hwdiv,+hwdiv-arm,+neon,+vfp4"<br>
+// CHECK-VFP4-DIV: "target-features"="+hwdiv,+hwdiv-arm,+neon,+t2dsp,+vfp4"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7s-apple-ios7.0 -target-cpu cyclone -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8<br>
 // RUN: %clang_cc1 -triple armv8-linux-gnueabi -target-cpu cortex-a53 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8<br>
 // RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu cortex-a57 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8<br>
 // RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu cortex-a72 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8<br>
-// CHECK-BASIC-V8: "target-features"="+crc,+crypto,+fp-armv8,+hwdiv,+hwdiv-arm,+neon"<br>
+// CHECK-BASIC-V8: "target-features"="+crc,+crypto,+fp-armv8,+hwdiv,+hwdiv-arm,+neon,+t2dsp"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-r5 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-DIV<br>
-// CHECK-VFP3-D16-DIV: "target-features"="+d16,+hwdiv,+hwdiv-arm,+vfp3"<br>
+// CHECK-VFP3-D16-DIV: "target-features"="+d16,+hwdiv,+hwdiv-arm,+t2dsp,+vfp3"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple armv7-linux-gnueabi -target-cpu cortex-r4f -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-THUMB-DIV<br>
-// CHECK-VFP3-D16-THUMB-DIV: "target-features"="+d16,+hwdiv,+vfp3"<br>
+// CHECK-VFP3-D16-THUMB-DIV: "target-features"="+d16,+hwdiv,+t2dsp,+vfp3"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-r7 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-FP16-DIV<br>
-// CHECK-VFP3-D16-FP16-DIV: "target-features"="+d16,+fp16,+hwdiv,+hwdiv-arm,+vfp3"<br>
+// CHECK-VFP3-D16-FP16-DIV: "target-features"="+d16,+fp16,+hwdiv,+hwdiv-arm,+t2dsp,+vfp3"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-m4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-D16-SP-THUMB-DIV<br>
-// CHECK-VFP4-D16-SP-THUMB-DIV: "target-features"="+d16,+fp-only-sp,+hwdiv,+vfp4"<br>
+// CHECK-VFP4-D16-SP-THUMB-DIV: "target-features"="+d16,+fp-only-sp,+hwdiv,+t2dsp,+vfp4"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-m7 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP5-D16-THUMB-DIV<br>
-// CHECK-VFP5-D16-THUMB-DIV: "target-features"="+d16,+fp-armv8,+hwdiv"<br>
+// CHECK-VFP5-D16-THUMB-DIV: "target-features"="+d16,+fp-armv8,+hwdiv,+t2dsp"<br>
<br>
<br>
 // RUN: %clang_cc1 -triple armv7-linux-gnueabi -target-cpu cortex-r4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-THUMB-DIV<br>
-// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-m3 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-THUMB-DIV<br>
-// CHECK-THUMB-DIV: "target-features"="+hwdiv"<br>
+// CHECK-THUMB-DIV: "target-features"="+hwdiv,+t2dsp"<br>
+<br>
+// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-m3 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-THUMB-DIV-M3<br>
+// CHECK-THUMB-DIV-M3: "target-features"="+hwdiv"<br>
<br>
<br>
 void foo() {}<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>