style: fix missing spaces in control statements
[gem5.git] / src / arch / x86 / insts / static_inst.cc
index 4f48c4c594aac905b61979ec8a615415ef102bea..709e0a610cb9dcebdb2d8491afa717cbd13405c0 100644 (file)
@@ -1,44 +1,27 @@
 /*
  * Copyright (c) 2007 The Hewlett-Packard Development Company
+ * Copyright (c) 2013 Advanced Micro Devices, Inc.
  * All rights reserved.
  *
- * Redistribution and use of this software in source and binary forms,
- * with or without modification, are permitted provided that the
- * following conditions are met:
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder.  You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
  *
- * The software must be used only for Non-Commercial Use which means any
- * use which is NOT directed to receiving any direct monetary
- * compensation for, or commercial advantage from such use.  Illustrative
- * examples of non-commercial use are academic research, personal study,
- * teaching, education and corporate research & development.
- * Illustrative examples of commercial use are distributing products for
- * commercial advantage and providing services using the software for
- * commercial advantage.
- *
- * If you wish to use this software or functionality therein that may be
- * covered by patents for commercial use, please contact:
- *     Director of Intellectual Property Licensing
- *     Office of Strategy and Technology
- *     Hewlett-Packard Company
- *     1501 Page Mill Road
- *     Palo Alto, California  94304
- *
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.  Redistributions
- * in binary form must reproduce the above copyright notice, this list of
- * conditions and the following disclaimer in the documentation and/or
- * other materials provided with the distribution.  Neither the name of
- * the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
  * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.  No right of
- * sublicense is granted herewith.  Derivatives of the software and
- * output created using the software may be prepared, but only for
- * Non-Commercial Uses.  Derivatives of the software may be shared with
- * others provided: (i) the others agree to abide by the list of
- * conditions herein which includes the Non-Commercial Use restrictions;
- * and (ii) such Derivatives of the software include the above copyright
- * notice to acknowledge the contribution from this software where
- * applicable, this list of conditions and the disclaimer below.
+ * this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@@ -56,7 +39,8 @@
  */
 
 #include "arch/x86/insts/static_inst.hh"
-#include "arch/x86/segmentregs.hh"
+#include "arch/x86/regs/segment.hh"
+#include "cpu/reg_class.hh"
 
 namespace X86ISA
 {
@@ -123,14 +107,14 @@ namespace X86ISA
     void
     X86StaticInst::printSrcReg(std::ostream &os, int reg, int size) const
     {
-        if(_numSrcRegs > reg)
+        if (_numSrcRegs > reg)
             printReg(os, _srcRegIdx[reg], size);
     }
 
     void
     X86StaticInst::printDestReg(std::ostream &os, int reg, int size) const
     {
-        if(_numDestRegs > reg)
+        if (_numDestRegs > reg)
             printReg(os, _destRegIdx[reg], size);
     }
 
@@ -147,17 +131,20 @@ namespace X86ISA
         static const char * microFormats[9] =
             {"", "t%db", "t%dw", "", "t%dd", "", "", "", "t%d"};
 
-        if (reg < FP_Base_DepTag) {
+        RegIndex rel_reg;
+
+        switch (regIdxToClass(reg, &rel_reg)) {
+          case IntRegClass: {
             const char * suffix = "";
-            bool fold = reg & IntFoldBit;
-            reg &= ~IntFoldBit;
+            bool fold = rel_reg & IntFoldBit;
+            rel_reg &= ~IntFoldBit;
 
-            if(fold)
+            if (fold)
                 suffix = "h";
-            else if(reg < 8 && size == 1)
+            else if (rel_reg < 8 && size == 1)
                 suffix = "l";
 
-            switch (reg) {
+            switch (rel_reg) {
               case INTREG_RAX:
                 ccprintf(os, abcdFormats[size], "a");
                 break;
@@ -207,33 +194,43 @@ namespace X86ISA
                 ccprintf(os, longFormats[size], "15");
                 break;
               default:
-                ccprintf(os, microFormats[size], reg - NUM_INTREGS);
+                ccprintf(os, microFormats[size], rel_reg - NUM_INTREGS);
             }
             ccprintf(os, suffix);
-        } else if (reg < Ctrl_Base_DepTag) {
-            int fpindex = reg - FP_Base_DepTag;
-            if(fpindex < NumMMXRegs) {
-                ccprintf(os, "%%mmx%d", reg - FP_Base_DepTag);
+            break;
+          }
+
+          case FloatRegClass: {
+            if (rel_reg < NumMMXRegs) {
+                ccprintf(os, "%%mmx%d", rel_reg);
                 return;
             }
-            fpindex -= NumMMXRegs;
-            if(fpindex < NumXMMRegs * 2) {
-                ccprintf(os, "%%xmm%d_%s", fpindex / 2,
-                        (fpindex % 2) ? "high": "low");
+            rel_reg -= NumMMXRegs;
+            if (rel_reg < NumXMMRegs * 2) {
+                ccprintf(os, "%%xmm%d_%s", rel_reg / 2,
+                        (rel_reg % 2) ? "high": "low");
                 return;
             }
-            fpindex -= NumXMMRegs * 2;
-            if(fpindex < NumMicroFpRegs) {
-                ccprintf(os, "%%ufp%d", fpindex);
+            rel_reg -= NumXMMRegs * 2;
+            if (rel_reg < NumMicroFpRegs) {
+                ccprintf(os, "%%ufp%d", rel_reg);
                 return;
             }
-            fpindex -= NumMicroFpRegs;
-            ccprintf(os, "%%st(%d)", fpindex);
-        } else {
-            switch (reg - Ctrl_Base_DepTag) {
+            rel_reg -= NumMicroFpRegs;
+            ccprintf(os, "%%st(%d)", rel_reg);
+            break;
+          }
+
+          case CCRegClass:
+            ccprintf(os, "%%cc%d", rel_reg);
+            break;
+
+          case MiscRegClass:
+            switch (rel_reg) {
               default:
-                ccprintf(os, "%%ctrl%d", reg - Ctrl_Base_DepTag);
+                ccprintf(os, "%%ctrl%d", rel_reg);
             }
+            break;
         }
     }
 
@@ -250,14 +247,14 @@ namespace X86ISA
         } else {
             if (scale != 0 && index != ZeroReg)
             {
-                if(scale != 1)
+                if (scale != 1)
                     ccprintf(os, "%d*", scale);
                 printReg(os, index, addressSize);
                 someAddr = true;
             }
             if (base != ZeroReg)
             {
-                if(someAddr)
+                if (someAddr)
                     os << " + ";
                 printReg(os, base, addressSize);
                 someAddr = true;
@@ -265,7 +262,7 @@ namespace X86ISA
         }
         if (disp != 0)
         {
-            if(someAddr)
+            if (someAddr)
                 os << " + ";
             ccprintf(os, "%#x", disp);
             someAddr = true;