arm: mark rules known to be buggy
authorDavid Schleef <ds@schleef.org>
Thu, 1 Jul 2010 02:34:01 +0000 (19:34 -0700)
committerDavid Schleef <ds@schleef.org>
Thu, 1 Jul 2010 02:34:01 +0000 (19:34 -0700)
orc/orcrules-arm.c

index 49d6093..62b7c81 100644 (file)
@@ -1480,6 +1480,11 @@ arm_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn)
   orc_arm_emit_rev (p, ORC_ARM_COND_AL, dest, src1);
 }
 
+#define CRASH if (0)
+#define INFLOOP if (0)
+#define FAIL if (0)
+#define OOB if (0)
+
 void
 orc_compiler_orc_arm_register_rules (OrcTarget *target)
 {
@@ -1487,70 +1492,70 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target)
 
   rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, 0);
 
-  orc_rule_register (rule_set, "absb", arm_rule_absX, (void *)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);
-  orc_rule_register (rule_set, "avgub", arm_rule_avgX, (void *)0);
+  FAIL orc_rule_register (rule_set, "andnb", arm_rule_andnX, NULL);
+  CRASH orc_rule_register (rule_set, "avgsb", arm_rule_avgX, (void *)3);
+  OOB orc_rule_register (rule_set, "avgub", arm_rule_avgX, (void *)0);
   orc_rule_register (rule_set, "cmpeqb", arm_rule_cmpeqX, (void *)1);
   orc_rule_register (rule_set, "cmpgtsb", arm_rule_cmpgtsX, (void *)1);
   orc_rule_register (rule_set, "copyb", arm_rule_copyX, NULL);
-  orc_rule_register (rule_set, "maxsb", arm_rule_maxsb, NULL);
-  orc_rule_register (rule_set, "maxub", arm_rule_maxub, NULL);
-  orc_rule_register (rule_set, "minsb", arm_rule_minsb, NULL);
-  orc_rule_register (rule_set, "minub", arm_rule_minub, NULL);
+  FAIL orc_rule_register (rule_set, "maxsb", arm_rule_maxsb, NULL);
+  FAIL orc_rule_register (rule_set, "maxub", arm_rule_maxub, NULL);
+  FAIL orc_rule_register (rule_set, "minsb", arm_rule_minsb, NULL);
+  FAIL orc_rule_register (rule_set, "minub", arm_rule_minub, NULL);
   orc_rule_register (rule_set, "orb", arm_rule_orX, NULL);
   orc_rule_register (rule_set, "shlb", arm_rule_shlX, (void *)1);
-  orc_rule_register (rule_set, "shrsb", arm_rule_shrsX, (void *)1);
-  orc_rule_register (rule_set, "shrub", arm_rule_shruX, (void *)1);
-  orc_rule_register (rule_set, "signb", arm_rule_signX, (void *)0);
+  FAIL orc_rule_register (rule_set, "shrsb", arm_rule_shrsX, (void *)1);
+  FAIL orc_rule_register (rule_set, "shrub", arm_rule_shruX, (void *)1);
+  INFLOOP orc_rule_register (rule_set, "signb", arm_rule_signX, (void *)0);
   orc_rule_register (rule_set, "subb", arm_rule_subb, NULL);
   orc_rule_register (rule_set, "subssb", arm_rule_subssb, NULL);
   orc_rule_register (rule_set, "subusb", arm_rule_subusb, NULL);
   orc_rule_register (rule_set, "xorb", arm_rule_xorX, NULL);
-  orc_rule_register (rule_set, "mullb", arm_rule_mullb, NULL);
-  orc_rule_register (rule_set, "mulhsb", arm_rule_mulhsb, NULL);
-  orc_rule_register (rule_set, "mulhub", arm_rule_mulhub, NULL);
+  CRASH orc_rule_register (rule_set, "mullb", arm_rule_mullb, NULL);
+  CRASH orc_rule_register (rule_set, "mulhsb", arm_rule_mulhsb, NULL);
+  CRASH orc_rule_register (rule_set, "mulhub", arm_rule_mulhub, NULL);
 
-  orc_rule_register (rule_set, "absw", arm_rule_absX, (void *)1);
+  CRASH 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);
-  orc_rule_register (rule_set, "avgsw", arm_rule_avgX, (void *)2);
-  orc_rule_register (rule_set, "avguw", arm_rule_avgX, (void *)1);
+  CRASH orc_rule_register (rule_set, "andnw", arm_rule_andnX, NULL);
+  CRASH orc_rule_register (rule_set, "avgsw", arm_rule_avgX, (void *)2);
+  CRASH orc_rule_register (rule_set, "avguw", arm_rule_avgX, (void *)1);
   orc_rule_register (rule_set, "cmpeqw", arm_rule_cmpeqX, (void *)2);
   orc_rule_register (rule_set, "cmpgtsw", arm_rule_cmpgtsX, (void *)2);
   orc_rule_register (rule_set, "copyw", arm_rule_copyX, NULL);
-  orc_rule_register (rule_set, "maxsw", arm_rule_maxsw, NULL);
-  orc_rule_register (rule_set, "maxuw", arm_rule_maxuw, NULL);
-  orc_rule_register (rule_set, "minsw", arm_rule_minsw, NULL);
-  orc_rule_register (rule_set, "minuw", arm_rule_minuw, NULL);
+  FAIL orc_rule_register (rule_set, "maxsw", arm_rule_maxsw, NULL);
+  FAIL orc_rule_register (rule_set, "maxuw", arm_rule_maxuw, NULL);
+  FAIL orc_rule_register (rule_set, "minsw", arm_rule_minsw, NULL);
+  FAIL orc_rule_register (rule_set, "minuw", arm_rule_minuw, NULL);
   orc_rule_register (rule_set, "orw", arm_rule_orX, NULL);
   orc_rule_register (rule_set, "shlw", arm_rule_shlX, (void *)2);
-  orc_rule_register (rule_set, "shrsw", arm_rule_shrsX, (void *)2);
+  FAIL orc_rule_register (rule_set, "shrsw", arm_rule_shrsX, (void *)2);
   orc_rule_register (rule_set, "shruw", arm_rule_shruX, (void *)2);
-  orc_rule_register (rule_set, "signw", arm_rule_signX, (void *)1);
+  FAIL orc_rule_register (rule_set, "signw", arm_rule_signX, (void *)1);
   orc_rule_register (rule_set, "subw", arm_rule_subw, NULL);
   orc_rule_register (rule_set, "subssw", arm_rule_subssw, NULL);
   orc_rule_register (rule_set, "subusw", arm_rule_subusw, NULL);
   orc_rule_register (rule_set, "xorw", arm_rule_xorX, NULL);
   orc_rule_register (rule_set, "mullw", arm_rule_mullw, NULL);
   orc_rule_register (rule_set, "mulhsw", arm_rule_mulhsw, NULL);
-  orc_rule_register (rule_set, "mulhuw", arm_rule_mulhuw, NULL);
+  FAIL orc_rule_register (rule_set, "mulhuw", arm_rule_mulhuw, NULL);
 
-  orc_rule_register (rule_set, "absl", arm_rule_absl, NULL);
+  FAIL orc_rule_register (rule_set, "absl", arm_rule_absl, NULL);
   orc_rule_register (rule_set, "addl", arm_rule_addl, NULL);
   orc_rule_register (rule_set, "addssl", arm_rule_addssl, NULL);
   orc_rule_register (rule_set, "addusl", arm_rule_addusl, NULL);
   orc_rule_register (rule_set, "andl", arm_rule_andX, NULL);
-  orc_rule_register (rule_set, "andnl", arm_rule_andnX, NULL);
-  orc_rule_register (rule_set, "avgul", arm_rule_avgXl, NULL);
-  orc_rule_register (rule_set, "avgsl", arm_rule_avgXl, NULL);
+  FAIL orc_rule_register (rule_set, "andnl", arm_rule_andnX, NULL);
+  FAIL orc_rule_register (rule_set, "avgul", arm_rule_avgXl, NULL);
+  FAIL orc_rule_register (rule_set, "avgsl", arm_rule_avgXl, NULL);
   orc_rule_register (rule_set, "cmpeql", arm_rule_cmpeql, NULL);
   orc_rule_register (rule_set, "cmpgtsl", arm_rule_cmpgtsl, NULL);
   orc_rule_register (rule_set, "copyl", arm_rule_copyX, NULL);
@@ -1560,39 +1565,39 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target)
   orc_rule_register (rule_set, "minul", arm_rule_minul, NULL);
   orc_rule_register (rule_set, "mulll", arm_rule_mulll, NULL);
   orc_rule_register (rule_set, "mulhsl", arm_rule_mulhsl, NULL);
-  orc_rule_register (rule_set, "mulhul", arm_rule_mulhul, NULL);
+  FAIL orc_rule_register (rule_set, "mulhul", arm_rule_mulhul, NULL);
   orc_rule_register (rule_set, "orl", arm_rule_orX, NULL);
   orc_rule_register (rule_set, "shll", arm_rule_shlX, (void *)4);
   orc_rule_register (rule_set, "shrsl", arm_rule_shrsX, (void *)4);
   orc_rule_register (rule_set, "shrul", arm_rule_shruX, (void *)4);
-  orc_rule_register (rule_set, "signl", arm_rule_signl, NULL);
+  FAIL orc_rule_register (rule_set, "signl", arm_rule_signl, NULL);
   orc_rule_register (rule_set, "subl", arm_rule_subl, NULL);
-  orc_rule_register (rule_set, "subssl", arm_rule_subssl, NULL);
+  FAIL orc_rule_register (rule_set, "subssl", arm_rule_subssl, NULL);
   orc_rule_register (rule_set, "subusl", arm_rule_subusl, NULL);
   orc_rule_register (rule_set, "xorl", arm_rule_xorX, NULL);
 
   orc_rule_register (rule_set, "convsbw", arm_rule_convsbw, NULL);
-  orc_rule_register (rule_set, "convubw", arm_rule_convubw, NULL);
-  orc_rule_register (rule_set, "convswl", arm_rule_convswl, NULL);
-  orc_rule_register (rule_set, "convuwl", arm_rule_convuwl, NULL);
+  FAIL orc_rule_register (rule_set, "convubw", arm_rule_convubw, NULL);
+  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, "convsuswb", arm_rule_convsuswb, NULL);
-  orc_rule_register (rule_set, "convusswb", arm_rule_convusswb, NULL);
-  orc_rule_register (rule_set, "convuuswb", arm_rule_convuuswb, 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);
-  orc_rule_register (rule_set, "convssslw", arm_rule_convssslw, NULL);
+  FAIL orc_rule_register (rule_set, "convssslw", arm_rule_convssslw, NULL);
   orc_rule_register (rule_set, "convsuslw", arm_rule_convsuslw, NULL);
-  orc_rule_register (rule_set, "convusslw", arm_rule_convusslw, NULL);
-  orc_rule_register (rule_set, "convuuslw", arm_rule_convuuslw, 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);
-  orc_rule_register (rule_set, "mulubw", arm_rule_mulubw, NULL);
-  orc_rule_register (rule_set, "mulswl", arm_rule_mulswl, NULL);
-  orc_rule_register (rule_set, "muluwl", arm_rule_muluwl, 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);
-  orc_rule_register (rule_set, "mergebw", arm_rule_mergebw, NULL);
+  FAIL orc_rule_register (rule_set, "mergebw", arm_rule_mergebw, NULL);
   orc_rule_register (rule_set, "select0wb", arm_rule_select0wb, NULL);
   orc_rule_register (rule_set, "select1wb", arm_rule_select1wb, NULL);
   orc_rule_register (rule_set, "select0lw", arm_rule_select0lw, NULL);