* src/vm/jit/alpha/emit.c [ENABLE_THREADS] (threads/native/lock.h):
[cacao.git] / src / vm / jit / i386 / icmd_uses_reg_res.inc
index 901558bde596b99a7e273b339321b85492683d0f..ad1397e2ed39e5ebdd7818f23c42ca6a1be2957c 100644 (file)
@@ -1,9 +1,9 @@
 /* src/vm/jit/i386/icm_uses_reg_res.inc - Table for reserved register usage
 
-   Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
-   R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
-   C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
-   Institut f. Computersprachen - TU Wien
+   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+   C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
+   E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
+   J. Wenninger, Institut f. Computersprachen - TU Wien
 
    This file is part of CACAO.
 
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
 
-   Contact: cacao@complang.tuwien.ac.at
+   Contact: cacao@cacaojvm.org
 
    Authors: Christian Ullrich
 
 */
 #define NO   0 /* Register survives this ICMD */
-#define S    1 /* Register can not be an source operand */
-#define D    2 /* Register can not be an destination operand */
+#define S    1 /* Register can not be a source operand */
+#define D    2 /* Register can not be a destination operand */
 #define YES  4 /* Register does not survive this ICMD */
 
 int lsra_reg_res[REG_RES_CNT]={EAX, ECX, EDX};
@@ -125,13 +125,13 @@ int icmd_uses_reg_res[256][REG_RES_CNT + 1] ={
 { S|YES, S|YES, S|YES, REG_NULL},    /* ICMD_SASTORE   */
 {  NO,  NO,  NO, REG_NULL},    /* ICMD_POP     */
 {  NO,  NO,  NO, REG_NULL},    /* ICMD_POP2    */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_DUP     */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_DUP_X1  */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_DUP_X2  */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_DUP2    */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_DUP2_X1 */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_DUP2_X2 */      
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_SWAP    */
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_DUP     */
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_DUP_X1  */
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_DUP_X2  */
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_DUP2    */
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_DUP2_X1 */
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_DUP2_X2 */      
+{YES|S|D,NO, NO, REG_NULL},    /* ICMD_SWAP    */
 { S|YES,  NO,  NO, REG_NULL},    /* ICMD_IADD  */
 { S|YES,  NO,  NO, REG_NULL},    /* ICMD_LADD  */
 {  NO,  NO,  NO, REG_NULL},    /* ICMD_FADD    */
@@ -216,13 +216,13 @@ int icmd_uses_reg_res[256][REG_RES_CNT + 1] ={
 { YES, YES, YES, REG_NULL},    /* ICMD_RETURN  */
 { S|YES, S|YES, S|YES, EAX},    /* ICMD_GETSTATIC*/   
 { S|YES, S|YES, S|YES, REG_NULL},    /* ICMD_PUTSTATIC*/   
-{ YES, S|YES,  NO, REG_NULL},    /* ICMD_GETFIELD      */    
-{ S|YES, S|YES,  NO, REG_NULL},    /* ICMD_PUTFIELD    */   
+{ S|YES, S|YES, S|YES, EAX},    /* ICMD_GETFIELD       */    
+{ S|YES, S|YES,  S|YES, REG_NULL},    /* ICMD_PUTFIELD */   
 { S|YES, YES, YES, EAX},        /* ICMD_INVOKEVIRTUAL  */    
 { S|YES, YES, YES, EAX},        /* ICMD_INVOKESPECIAL  */  
 { S|YES, YES, YES, EAX},        /* ICMD_INVOKESTATIC   */     
 { S|YES, YES, YES, EAX},        /* ICMD_INVOKEINTERFACE*/
-{  NO,  NO,  NO, REG_NULL},    /* ICMD_CHECKASIZE      */
+{  NO,  NO,  NO, REG_NULL},    /* UNDEF186 */
 { YES, YES, YES, REG_NULL}, /* ICMD_NEW        */
 { YES, YES, YES, REG_NULL}, /* ICMD_NEWARRAY   */
 { YES, YES, YES, REG_NULL}, /* ICMD_ANEWARRAY  */
@@ -230,7 +230,7 @@ int icmd_uses_reg_res[256][REG_RES_CNT + 1] ={
 { YES, YES, YES, REG_NULL},    /* ICMD_ATHROW  */
 { YES, S|YES, S|YES, REG_NULL},  /* ICMD_CHECKCAST     */
 /* { S|D|YES, S|D|YES, S|D|YES, REG_NULL}, */    /* ICMD_CHECKCAST     */
-{ D|YES, D|YES, YES, REG_NULL},    /* ICMD_INSTANCEOF  */
+{ S|D|YES, S|D|YES, S|D|YES, REG_NULL},    /* ICMD_INSTANCEOF  */
 /*{ S|D|YES, S|D|YES, S|D|YES, REG_NULL}, */    /* ICMD_INSTANCEOF     */
 { YES, YES, YES, REG_NULL}, /* ICMD_MONITORENTER       */
 { YES, YES, YES, REG_NULL}, /* ICMD_MONITOREXIT        */
@@ -241,7 +241,7 @@ int icmd_uses_reg_res[256][REG_RES_CNT + 1] ={
 { YES, YES, YES, REG_NULL}, /* ICMD_UNDEF200   */
 { YES, YES, YES, REG_NULL}, /* ICMD_UNDEF201   */
 { YES, YES, YES, REG_NULL}, /* ICMD_UNDEF202   */
-{ YES,  NO,  NO, REG_NULL},    /* ICMD_CHECKEXCEPTION  */
+{ NO,  NO,  NO, REG_NULL},    /* UNDEF203 */
 { S|YES, S|YES,  NO, REG_NULL},    /* ICMD_IASTORECONST        */
 { S|YES, S|YES,  NO, REG_NULL},    /* ICMD_LASTORECONST        */
 { S|YES, S|YES, YES, REG_NULL}, /* ICMD_FASTORECONST   */
@@ -251,7 +251,7 @@ int icmd_uses_reg_res[256][REG_RES_CNT + 1] ={
 { S|YES, S|YES,  NO, REG_NULL},    /* ICMD_CASTORECONST        */
 { S|YES, S|YES,  NO, REG_NULL},    /* ICMD_SASTORECONST        */
 { S|YES, S|YES, S|YES, REG_NULL},    /* ICMD_PUTSTATICCONST */
-{  YES,  NO,  NO, REG_NULL},    /* ICMD_PUTFIELDCONST */
+{ S|YES,  S|YES,  S|YES, REG_NULL},    /* ICMD_PUTFIELDCONST */
 { YES, YES, YES, REG_NULL}, /* ICMD_IMULPOW2 */
 { YES, YES, YES, REG_NULL}, /* ICMD_LMULPOW2 */
 {  NO,  NO,  NO, REG_NULL}, /*         "UNDEF216"      */