ARM: Support instructions that set the GE bits when they write the condition codes.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 2 Jun 2010 17:58:06 +0000 (12:58 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 2 Jun 2010 17:58:06 +0000 (12:58 -0500)
src/arch/arm/isa/insts/data.isa

index 9de42807e660547770ec5f52eaf5ab3f7c404b4b..5d14f3b75828c5f712dddf815adf3c3b4725072f 100644 (file)
@@ -43,6 +43,10 @@ let {{
     decoder_output = ""
     exec_output = ""
 
+    calcGECode = '''
+        CondCodes = insertBits(CondCodes, 19, 16, resTemp);
+    '''
+
     calcQCode = '''
         CondCodes = CondCodes | ((resTemp & 1) << 27);
     '''
@@ -108,6 +112,8 @@ let {{
             negBit = 63
         if flagType == "saturate":
             immCcCode = calcQCode
+        elif flagType == "ge":
+            immCcCode = calcGECode
         else:
             immCcCode = calcCcCode % {
                 "icValue": secondOpRe.sub(immOp2, cCode[0]),
@@ -143,6 +149,8 @@ let {{
             negBit = 63
         if flagType == "saturate":
             regCcCode = calcQCode
+        elif flagType == "ge":
+            immCcCode = calcGECode
         else:
             regCcCode = calcCcCode % {
                 "icValue": secondOpRe.sub(regOp2, cCode[1]),
@@ -179,6 +187,8 @@ let {{
             negBit = 63
         if flagType == "saturate":
             regRegCcCode = calcQCode
+        elif flagType == "ge":
+            immCcCode = calcGECode
         else:
             regRegCcCode = calcCcCode % {
                 "icValue": secondOpRe.sub(regRegOp2, cCode[2]),