1# Copyright (C) 2009 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15# Specifies the size of the assembly region in bytes 16handler-style computed-goto 17handler-size 64 18 19# source for the instruction table stub 20asm-stub x86-atom/stub.S 21 22# file header, macros and definitions 23import c/header.cpp 24import x86-atom/header.S 25 26# common defs for the C helper; include this before the instruction handlers 27import cstubs/stubdefs.cpp 28import c/opcommon.cpp 29 30# start of opcode list; command gives default directory location of instruction files 31op-start x86-atom 32 33#op OP_ADD_DOUBLE_2ADDR c 34#op OP_ADD_DOUBLE c 35#op OP_ADD_FLOAT_2ADDR c 36#op OP_ADD_FLOAT c 37#op OP_ADD_INT_2ADDR c 38#op OP_ADD_INT_LIT16 c 39#op OP_ADD_INT_LIT8 c 40#op OP_ADD_INT c 41#op OP_ADD_LONG_2ADDR c 42#op OP_ADD_LONG c 43#op OP_AGET_BOOLEAN c 44#op OP_AGET_BYTE c 45#op OP_AGET_CHAR c 46#op OP_AGET_OBJECT c 47#op OP_AGET c 48#op OP_AGET_SHORT c 49#op OP_AGET_WIDE c 50#op OP_AND_INT_2ADDR c 51#op OP_AND_INT_LIT16 c 52#op OP_AND_INT_LIT8 c 53#op OP_AND_INT c 54#op OP_AND_LONG_2ADDR c 55#op OP_AND_LONG c 56#op OP_APUT_BOOLEAN c 57#op OP_APUT_BYTE c 58#op OP_APUT_CHAR c 59#op OP_APUT_OBJECT c 60#op OP_APUT c 61#op OP_APUT_SHORT c 62#op OP_APUT_WIDE c 63#op OP_ARRAY_LENGTH c 64#op OP_CHECK_CAST c 65#op OP_CMPG_DOUBLE c 66#op OP_CMPG_FLOAT c 67#op OP_CMPL_DOUBLE c 68#op OP_CMPL_FLOAT c 69#op OP_CMP_LONG c 70#op OP_CONST_16 c 71#op OP_CONST_4 c 72#op OP_CONST_CLASS c 73#op OP_CONST_HIGH16 c 74#op OP_CONST c 75#op OP_CONST_STRING_JUMBO c 76#op OP_CONST_STRING c 77#op OP_CONST_WIDE_16 c 78#op OP_CONST_WIDE_32 c 79#op OP_CONST_WIDE_HIGH16 c 80#op OP_CONST_WIDE c 81#op OP_DIV_DOUBLE_2ADDR c 82#op OP_DIV_DOUBLE c 83#op OP_DIV_FLOAT_2ADDR c 84#op OP_DIV_FLOAT c 85#op OP_DIV_INT_2ADDR c 86#op OP_DIV_INT_LIT16 c 87#op OP_DIV_INT_LIT8 c 88#op OP_DIV_INT c 89#op OP_DIV_LONG_2ADDR c 90#op OP_DIV_LONG c 91#op OP_DOUBLE_TO_FLOAT c 92#op OP_DOUBLE_TO_INT c 93#op OP_DOUBLE_TO_LONG c 94#op OP_EXECUTE_INLINE c 95#op OP_FILL_ARRAY_DATA c 96#op OP_FILLED_NEW_ARRAY_RANGE c 97#op OP_FILLED_NEW_ARRAY c 98#op OP_FLOAT_TO_DOUBLE c 99#op OP_FLOAT_TO_INT c 100#op OP_FLOAT_TO_LONG c 101#op OP_GOTO_16 c 102#op OP_GOTO_32 c 103#op OP_GOTO c 104#op OP_IF_EQ c 105#op OP_IF_EQZ c 106#op OP_IF_GE c 107#op OP_IF_GEZ c 108#op OP_IF_GT c 109#op OP_IF_GTZ c 110#op OP_IF_LE c 111#op OP_IF_LEZ c 112#op OP_IF_LT c 113#op OP_IF_LTZ c 114#op OP_IF_NE c 115#op OP_IF_NEZ c 116#op OP_IGET_BOOLEAN c 117#op OP_IGET_BYTE c 118#op OP_IGET_CHAR c 119#op OP_IGET_OBJECT_QUICK c 120#op OP_IGET_OBJECT c 121#op OP_IGET_QUICK c 122#op OP_IGET c 123#op OP_IGET_SHORT c 124#op OP_IGET_WIDE_QUICK c 125#op OP_IGET_WIDE c 126#op OP_INSTANCE_OF c 127#op OP_INT_TO_BYTE c 128#op OP_INT_TO_CHAR c 129#op OP_INT_TO_DOUBLE c 130#op OP_INT_TO_FLOAT c 131#op OP_INT_TO_LONG c 132#op OP_INT_TO_SHORT c 133#op OP_INVOKE_DIRECT_EMPTY c 134#op OP_INVOKE_DIRECT_RANGE c 135#op OP_INVOKE_DIRECT c 136#op OP_INVOKE_INTERFACE_RANGE c 137#op OP_INVOKE_INTERFACE c 138#op OP_INVOKE_STATIC_RANGE c 139#op OP_INVOKE_STATIC c 140#op OP_INVOKE_SUPER_QUICK_RANGE c 141#op OP_INVOKE_SUPER_QUICK c 142#op OP_INVOKE_SUPER_RANGE c 143#op OP_INVOKE_SUPER c 144#op OP_INVOKE_VIRTUAL_QUICK_RANGE c 145#op OP_INVOKE_VIRTUAL_QUICK c 146#op OP_INVOKE_VIRTUAL_RANGE c 147#op OP_INVOKE_VIRTUAL c 148#op OP_IPUT_BOOLEAN c 149#op OP_IPUT_BYTE c 150#op OP_IPUT_CHAR c 151#op OP_IPUT_OBJECT_QUICK c 152#op OP_IPUT_OBJECT c 153#op OP_IPUT_QUICK c 154#op OP_IPUT c 155#op OP_IPUT_SHORT c 156#op OP_IPUT_WIDE_QUICK c 157#op OP_IPUT_WIDE c 158#op OP_LONG_TO_DOUBLE c 159#op OP_LONG_TO_FLOAT c 160#op OP_LONG_TO_INT c 161#op OP_MONITOR_ENTER c 162#op OP_MONITOR_EXIT c 163#op OP_MOVE_16 c 164#op OP_MOVE_EXCEPTION c 165#op OP_MOVE_FROM16 c 166#op OP_MOVE_OBJECT_16 c 167#op OP_MOVE_OBJECT_FROM16 c 168#op OP_MOVE_OBJECT c 169#op OP_MOVE_RESULT_OBJECT c 170#op OP_MOVE_RESULT c 171#op OP_MOVE_RESULT_WIDE c 172#op OP_MOVE c 173#op OP_MOVE_WIDE_16 c 174#op OP_MOVE_WIDE_FROM16 c 175#op OP_MOVE_WIDE c 176#op OP_MUL_DOUBLE_2ADDR c 177#op OP_MUL_DOUBLE c 178#op OP_MUL_FLOAT_2ADDR c 179#op OP_MUL_FLOAT c 180#op OP_MUL_INT_2ADDR c 181#op OP_MUL_INT_LIT16 c 182#op OP_MUL_INT_LIT8 c 183#op OP_MUL_INT c 184#op OP_MUL_LONG_2ADDR c 185#op OP_MUL_LONG c 186#op OP_NEG_DOUBLE c 187#op OP_NEG_FLOAT c 188#op OP_NEG_INT c 189#op OP_NEG_LONG c 190#op OP_NEW_ARRAY c 191#op OP_NEW_INSTANCE c 192#op OP_NOP c 193#op OP_NOT_INT c 194#op OP_NOT_LONG c 195#op OP_OR_INT_2ADDR c 196#op OP_OR_INT_LIT16 c 197#op OP_OR_INT_LIT8 c 198#op OP_OR_INT c 199#op OP_OR_LONG_2ADDR c 200#op OP_OR_LONG c 201#op OP_PACKED_SWITCH c 202#op OP_REM_DOUBLE_2ADDR c 203#op OP_REM_DOUBLE c 204#op OP_REM_FLOAT_2ADDR c 205#op OP_REM_FLOAT c 206#op OP_REM_INT_2ADDR c 207#op OP_REM_INT_LIT16 c 208#op OP_REM_INT_LIT8 c 209#op OP_REM_INT c 210#op OP_REM_LONG_2ADDR c 211#op OP_REM_LONG c 212#op OP_RETURN_OBJECT c 213#op OP_RETURN c 214#op OP_RETURN_VOID c 215#op OP_RETURN_WIDE c 216#op OP_RSUB_INT_LIT8 c 217#op OP_RSUB_INT c 218#op OP_SGET_BOOLEAN c 219#op OP_SGET_BYTE c 220#op OP_SGET_CHAR c 221#op OP_SGET_OBJECT c 222#op OP_SGET c 223#op OP_SGET_SHORT c 224#op OP_SGET_WIDE c 225#op OP_SHL_INT_2ADDR c 226#op OP_SHL_INT_LIT8 c 227#op OP_SHL_INT c 228#op OP_SHL_LONG_2ADDR c 229#op OP_SHL_LONG c 230#op OP_SHR_INT_2ADDR c 231#op OP_SHR_INT_LIT8 c 232#op OP_SHR_INT c 233#op OP_SHR_LONG_2ADDR c 234#op OP_SHR_LONG c 235#op OP_SPARSE_SWITCH c 236#op OP_SPUT_BOOLEAN c 237#op OP_SPUT_BYTE c 238#op OP_SPUT_CHAR c 239#op OP_SPUT_OBJECT c 240#op OP_SPUT c 241#op OP_SPUT_SHORT c 242#op OP_SPUT_WIDE c 243#op OP_SUB_DOUBLE_2ADDR c 244#op OP_SUB_DOUBLE c 245#op OP_SUB_FLOAT_2ADDR c 246#op OP_SUB_FLOAT c 247#op OP_SUB_INT_2ADDR c 248#op OP_SUB_INT c 249#op OP_SUB_LONG_2ADDR c 250#op OP_SUB_LONG c 251#op OP_THROW c 252#op OP_UNUSED_3E c 253#op OP_UNUSED_3F c 254#op OP_UNUSED_40 c 255#op OP_UNUSED_41 c 256#op OP_UNUSED_42 c 257#op OP_UNUSED_43 c 258#op OP_UNUSED_73 c 259#op OP_UNUSED_79 c 260#op OP_UNUSED_7A c 261#op OP_UNUSED_F1 c 262#op OP_UNUSED_FC c 263#op OP_UNUSED_FD c 264#op OP_UNUSED_FE c 265#op OP_UNUSED_FF c 266#op OP_USHR_INT_2ADDR c 267#op OP_USHR_INT_LIT8 c 268#op OP_USHR_INT c 269#op OP_USHR_LONG_2ADDR c 270#op OP_USHR_LONG c 271#op OP_XOR_INT_2ADDR c 272#op OP_XOR_INT_LIT16 c 273#op OP_XOR_INT_LIT8 c 274#op OP_XOR_INT c 275#op OP_XOR_LONG_2ADDR c 276#op OP_XOR_LONG c 277 278# TODO: provide native implementations 279op OP_BREAKPOINT c 280op OP_EXECUTE_INLINE_RANGE c 281op OP_IGET_VOLATILE c 282op OP_IPUT_VOLATILE c 283op OP_SGET_VOLATILE c 284op OP_SPUT_VOLATILE c 285op OP_IGET_OBJECT_VOLATILE c 286op OP_IPUT_OBJECT_VOLATILE c 287op OP_SGET_OBJECT_VOLATILE c 288op OP_SPUT_OBJECT_VOLATILE c 289op OP_IGET_WIDE_VOLATILE c 290op OP_IPUT_WIDE_VOLATILE c 291op OP_SGET_WIDE_VOLATILE c 292op OP_SPUT_WIDE_VOLATILE c 293op OP_RETURN_VOID_BARRIER c 294op OP_INVOKE_OBJECT_INIT_RANGE c 295 296op-end 297 298# arch-specific entry point to interpreter 299import x86-atom/entry.S 300 301# "helper" code for C; include this after the instruction handlers 302import c/gotoTargets.cpp 303import cstubs/enddefs.cpp 304 305# common subroutines for asm 306import x86-atom/footer.S 307