Add arm neon and mips dspr2 arch features

Current modules must use armv7_a_neon to specify source files that
compile only with neon.  If a future arch variant also supports neon,
all these modules will fall back to non-neon.  Support a neon arch
feature that modules can use instead.  Similarly, support dspr2 for
mips.

arm_device.go was also mixing armv7-a-neon with armv7_a_neon.  Use
armv7-a-neon consistently, and fix the - to _ when creating the
property structs.

Test: m -j checkbuild
Change-Id: I24d3764280ab3bcbb9a73c0934edc9b99fc7f6a0
diff --git a/cc/config/arm_device.go b/cc/config/arm_device.go
index 5d17d15..94627e7 100644
--- a/cc/config/arm_device.go
+++ b/cc/config/arm_device.go
@@ -156,20 +156,25 @@
 )
 
 func init() {
+	android.RegisterArchFeatures(android.Arm,
+		"neon")
+
 	android.RegisterArchVariants(android.Arm,
 		"armv5te",
-		"armv7_a",
-		"armv7_a_neon",
-		"cortex_a7",
-		"cortex_a8",
-		"cortex_a9",
-		"cortex_a15",
-		"cortex_a53",
-		"cortex_a53_a57",
+		"armv7-a",
+		"armv7-a-neon",
+		"cortex-a7",
+		"cortex-a8",
+		"cortex-a9",
+		"cortex-a15",
+		"cortex-a53",
+		"cortex-a53-a57",
 		"krait",
 		"kryo",
 		"denver")
 
+	android.RegisterArchVariantFeatures(android.Arm, "armv7-a-neon", "neon")
+
 	// Krait and Kryo targets are not supported by GCC, but are supported by Clang,
 	// so override the definitions when building modules with Clang.
 	replaceFirst(armClangCpuVariantCflags["krait"], "-mcpu=cortex-a15", "-mcpu=krait")
diff --git a/cc/config/mips_device.go b/cc/config/mips_device.go
index ccd60d6..42025a2 100644
--- a/cc/config/mips_device.go
+++ b/cc/config/mips_device.go
@@ -133,7 +133,11 @@
 		"mips32r2dsp_fp",
 		"mips32r2dspr2_fp",
 		"mips32r6")
-	android.RegisterArchFeatures(android.Mips, "rev6")
+	android.RegisterArchFeatures(android.Mips,
+		"dspr2",
+		"rev6")
+	android.RegisterArchVariantFeatures(android.Mips, "mips32r2dspr2_fp",
+		"dspr2")
 	android.RegisterArchVariantFeatures(android.Mips, "mips32r6",
 		"rev6")