summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2010-07-20 13:58:38 -0700
committerDavid Schleef <ds@schleef.org>2010-07-20 13:58:38 -0700
commit410573bb1c0b48eb9b6261c884f1148c1bd371fb (patch)
treed517201188869ab6e349cf2615dee14cf9d1a361
parentd11dbf474565ad36521e7530919da70a472db85d (diff)
downloadorc-410573bb1c0b48eb9b6261c884f1148c1bd371fb.tar.gz
arm: mark some rules as ARM v6 only
-rw-r--r--orc/orcprogram.h4
-rw-r--r--orc/orcrules-arm.c33
2 files changed, 24 insertions, 13 deletions
diff --git a/orc/orcprogram.h b/orc/orcprogram.h
index 5d00ba3..daa03ed 100644
--- a/orc/orcprogram.h
+++ b/orc/orcprogram.h
@@ -88,6 +88,10 @@ enum {
ORC_TARGET_NEON_NEON = (1<<1)
};
+enum {
+ ORC_TARGET_ARM_ARMV6 = (1<<0)
+};
+
typedef enum {
ORC_VAR_TYPE_TEMP,
ORC_VAR_TYPE_SRC,
diff --git a/orc/orcrules-arm.c b/orc/orcrules-arm.c
index 144dead..ddb3336 100644
--- a/orc/orcrules-arm.c
+++ b/orc/orcrules-arm.c
@@ -1500,9 +1500,6 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target)
rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, 0);
FAIL orc_rule_register (rule_set, "absb", arm_rule_absX, (void *)0);
- orc_rule_register (rule_set, "addb", arm_rule_addb, NULL);
- orc_rule_register (rule_set, "addssb", arm_rule_addssb, NULL);
- orc_rule_register (rule_set, "addusb", arm_rule_addusb, NULL);
orc_rule_register (rule_set, "andb", arm_rule_andX, NULL);
orc_rule_register (rule_set, "andnb", arm_rule_andnX, NULL);
orc_rule_register (rule_set, "avgsb", arm_rule_avgX, (void *)3);
@@ -1528,9 +1525,6 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target)
FAIL orc_rule_register (rule_set, "mulhub", arm_rule_mulhub, NULL);
FAIL orc_rule_register (rule_set, "absw", arm_rule_absX, (void *)1);
- orc_rule_register (rule_set, "addw", arm_rule_addw, NULL);
- orc_rule_register (rule_set, "addssw", arm_rule_addssw, NULL);
- orc_rule_register (rule_set, "addusw", arm_rule_addusw, NULL);
orc_rule_register (rule_set, "andw", arm_rule_andX, NULL);
orc_rule_register (rule_set, "andnw", arm_rule_andnX, NULL);
FAIL orc_rule_register (rule_set, "avgsw", arm_rule_avgX, (void *)2);
@@ -1588,21 +1582,33 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target)
FAIL orc_rule_register (rule_set, "convswl", arm_rule_convswl, NULL);
FAIL orc_rule_register (rule_set, "convuwl", arm_rule_convuwl, NULL);
orc_rule_register (rule_set, "convwb", arm_rule_convwb, NULL);
- orc_rule_register (rule_set, "convssswb", arm_rule_convssswb, NULL);
+ orc_rule_register (rule_set, "convlw", arm_rule_convlw, NULL);
+
+ orc_rule_register (rule_set, "mulsbw", arm_rule_mulsbw, NULL);
+ FAIL orc_rule_register (rule_set, "mulubw", arm_rule_mulubw, NULL);
+ FAIL orc_rule_register (rule_set, "mulswl", arm_rule_mulswl, NULL);
+ FAIL orc_rule_register (rule_set, "muluwl", arm_rule_muluwl, NULL);
+
+ rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target,
+ ORC_TARGET_ARM_ARMV6);
+
+ orc_rule_register (rule_set, "addb", arm_rule_addb, NULL);
+ orc_rule_register (rule_set, "addssb", arm_rule_addssb, NULL);
+ orc_rule_register (rule_set, "addusb", arm_rule_addusb, NULL);
+
+ orc_rule_register (rule_set, "addw", arm_rule_addw, NULL);
+ orc_rule_register (rule_set, "addssw", arm_rule_addssw, NULL);
+ orc_rule_register (rule_set, "addusw", arm_rule_addusw, NULL);
+
orc_rule_register (rule_set, "convsuswb", arm_rule_convsuswb, NULL);
+ orc_rule_register (rule_set, "convssswb", arm_rule_convssswb, NULL);
FAIL orc_rule_register (rule_set, "convusswb", arm_rule_convusswb, NULL);
FAIL orc_rule_register (rule_set, "convuuswb", arm_rule_convuuswb, NULL);
- orc_rule_register (rule_set, "convlw", arm_rule_convlw, NULL);
FAIL orc_rule_register (rule_set, "convssslw", arm_rule_convssslw, NULL);
orc_rule_register (rule_set, "convsuslw", arm_rule_convsuslw, NULL);
FAIL orc_rule_register (rule_set, "convusslw", arm_rule_convusslw, NULL);
FAIL orc_rule_register (rule_set, "convuuslw", arm_rule_convuuslw, NULL);
- orc_rule_register (rule_set, "mulsbw", arm_rule_mulsbw, NULL);
- FAIL orc_rule_register (rule_set, "mulubw", arm_rule_mulubw, NULL);
- FAIL orc_rule_register (rule_set, "mulswl", arm_rule_mulswl, NULL);
- FAIL orc_rule_register (rule_set, "muluwl", arm_rule_muluwl, NULL);
-
orc_rule_register (rule_set, "mergewl", arm_rule_mergewl, NULL);
FAIL orc_rule_register (rule_set, "mergebw", arm_rule_mergebw, NULL);
orc_rule_register (rule_set, "select0wb", arm_rule_select0wb, NULL);
@@ -1612,5 +1618,6 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target)
orc_rule_register (rule_set, "swapw", arm_rule_swapw, NULL);
orc_rule_register (rule_set, "swapl", arm_rule_swapl, NULL);
+
}