You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2010/06/07 00:47:41 UTC

svn commit: r952017 [1/5] - in /harmony/enhanced/java/trunk/drlvm: make/vm/ vm/jitrino/config/em64t/ vm/jitrino/config/ia32/ vm/jitrino/src/codegenerator/ vm/jitrino/src/codegenerator/ia32/ vm/jitrino/src/jet/ vm/jitrino/src/optimizer/ vm/jitrino/src/o...

Author: hindessm
Date: Sun Jun  6 22:47:40 2010
New Revision: 952017

URL: http://svn.apache.org/viewvc?rev=952017&view=rev
Log:
Applying the most recent javavect.patch from "[#HARMONY-6517] New
optimization and interface for either automatically or manually
vectorizing Java programs with SSE instructions".

I'll apply the other patches when I can figure out how best to integrate
them.

Added:
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/opt_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_static_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/opt_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_aggressive_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_static_autovect.emconf
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/autovect.cpp   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/dependence.cpp   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/dependence.h   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/expr.cpp   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/expr.h   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/loop-info.cpp   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/loop-info.h   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/scalar-evolution.cpp   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/autovect/scalar-evolution.h   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/SIMD.cpp   (with props)
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/SIMD.h   (with props)
Modified:
    harmony/enhanced/java/trunk/drlvm/make/vm/jitrino.xml
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackLayout.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/jet/cg_fld_arr.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/CodeSelectors.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/FlowGraph.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/FlowGraph.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opnd.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/codelowerer.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/memoryopt.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h
    harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/vm/VMInterface.cpp
    harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp
    harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h
    harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h
    harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h
    harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp
    harmony/enhanced/java/trunk/drlvm/vm/vmcore/include/compile.h
    harmony/enhanced/java/trunk/drlvm/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp

Modified: harmony/enhanced/java/trunk/drlvm/make/vm/jitrino.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/make/vm/jitrino.xml?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/make/vm/jitrino.xml (original)
+++ harmony/enhanced/java/trunk/drlvm/make/vm/jitrino.xml Sun Jun  6 22:47:40 2010
@@ -34,6 +34,7 @@
                 <include name="optimizer" />
                 <include name="optimizer/ssa" />
                 <include name="optimizer/abcd" />
+                <include name="optimizer/autovect" />
                 <include name="translator" />
                 <include name="translator/java" />
                 <include name="vm" />
@@ -69,6 +70,7 @@
                     <include name="optimizer/*.cpp" />
                     <include name="optimizer/ssa/*.cpp" />
                     <include name="optimizer/abcd/*.cpp" />
+                    <include name="optimizer/autovect/*.cpp" />
                     <include name="translator/*.cpp" />
                     <include name="translator/java/*.cpp" />
                     <include name="vm/*.cpp" />

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/opt_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/opt_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/opt_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/opt_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,49 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# EM configuration file for CS_OPT-only mode of Jitrino. This is 'client static' mode
+
+chains=chain1
+chain1.jits=CS_OPT
+CS_OPT.file=jitrino
+
+
+# Options to be passed to JIT
+
+-XX:jit.CS_OPT.path=opt_init,lock_method,translator,optimizer,hir2lir,codegen,unlock_method
+
+-XX:jit.CS_OPT.path.optimizer=ssa,devirt,hlo_api_magic,inline,purge,simplify,dce,uce,osr_path-,escape_path,dce,uce,memopt,simplify,dce,uce,lower,autovect,dessa,statprof
+-XX:jit.CS_OPT.path.osr_path=gcm,osr,simplify,dce,uce
+-XX:jit.CS_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.CS_OPT.path.codegen=bbp,gcpoints,cafl,dce1,i8l-,api_magic,light_jni-,early_prop-,itrace-,native,constraints,dce2,regalloc,spillgen,layout,copy,rce-,stack,break-,iprof-,emitter!,si_insts,gcmap,info
+-XX:jit.CS_OPT.path.dce1=cg_dce
+-XX:jit.CS_OPT.path.dce2=cg_dce
+-XX:jit.CS_OPT.path.regalloc=bp_regalloc1,bp_regalloc2
+-XX:jit.CS_OPT.path.bp_regalloc1=bp_regalloc
+-XX:jit.CS_OPT.path.bp_regalloc2=bp_regalloc
+
+#inliner configuration
+-XX:jit.CS_OPT.CS_OPT_inliner_pipeline.filter=-
+-XX:jit.CS_OPT.CS_OPT_inliner_pipeline.path=ssa,devirt,hlo_api_magic
+-XX:jit.CS_OPT.arg.optimizer.inline.pipeline=CS_OPT_inliner_pipeline
+
+
+-XX:jit.CS_OPT.arg.codegen.dce1.early=yes
+-XX:jit.CS_OPT.arg.codegen.regalloc.bp_regalloc1.regs=ALL_GP
+-XX:jit.CS_OPT.arg.codegen.regalloc.bp_regalloc2.regs=ALL_XMM
+-XX:jit.arg.codegen.emitter.align=0
+
+#system properties
+-Djava.compiler=client static

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,139 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# EM configuration for 'server' mode of Jitrino
+#
+# When changing configuration for SD2_OPT JIT, do not forget to reflect the same
+#   changes for SS_OPT JIT in server_static.emconf (used for debugging purposes)
+#
+# rules for server -> server_static conversion
+#     JET_CLINIT -> SS_OPT
+#     inline_helpers -> inline_helpers-
+#     edge_annotate -> statprof
+
+chains=chain1,chain2
+chain1.jits=JET_CLINIT
+chain2.jits=SD1_OPT,SD2_OPT
+
+chain1.filter=+.<clinit>
+chain1.filter=-
+
+JET_CLINIT.file=jitrino
+SD1_OPT.file=jitrino
+SD2_OPT.file=jitrino
+
+# Edge profiler and recompilation parameters
+EDGE_PROF.profilerType=EDGE_PROFILER
+EDGE_PROF.entryThreshold=40000
+EDGE_PROF.backedgeThreshold=150000
+EDGE_PROF.tbsTimeout=10
+EDGE_PROF.tbsInitialTimeout=0
+
+VALUE_PROF.profilerType=VALUE_PROFILER
+VALUE_PROF.vpalgo=TNV_FIRST_N
+VALUE_PROF.updateStrategy=LOCKED_INSERT
+VALUE_PROF.vpSteadySize=4
+SD1_OPT.genProfile=EDGE_PROF,VALUE_PROF
+SD2_OPT.useProfile=EDGE_PROF,VALUE_PROF
+
+#options for JIT
+
+-XX:jit.JET_CLINIT.path=
+
+#register allocator configuration
+-XDjit.RA2.filter=-
+-XDjit.RA2.path=bp_regalloc1,bp_regalloc2
+-XDjit.RA2.path.bp_regalloc1=bp_regalloc
+-XDjit.RA2.path.bp_regalloc2=bp_regalloc
+-XDjit.RA2.arg.bp_regalloc1.regs=ALL_GP
+-XDjit.RA2.arg.bp_regalloc2.regs=ALL_XMM
+-XDjit.RA3.filter=-
+-XDjit.RA3.path=webmaker,cg_regalloc
+-XDjit.RA3.arg.webmaker.calc=true
+
+-XX:jit.SD1_OPT.path=opt_init,lock_method,translator,optimizer,hir2lir,codegen,unlock_method
+
+-XX:jit.SD1_OPT.path.optimizer=ssa,simplify,dce,uce,vp_instrument,devirt_virtual,edge_instrument,dessa,statprof
+-XX:jit.SD1_OPT.path.devirt_virtual=devirt
+-XX:jit.SD1_OPT.path.codegen=bbp,gcpoints,cafl,dce1,i8l-,light_jni-,early_prop-,itrace-,native,constraints,dce2,regalloc,spillgen,layout,copy,rce-,stack,break-,iprof-,emitter!,si_insts,gcmap,info
+-XX:jit.SD1_OPT.path.dce1=cg_dce
+-XX:jit.SD1_OPT.path.dce2=cg_dce
+
+-XX:jit.SD1_OPT.arg.codegen.dce1.early=yes
+
+-XX:jit.SD2_OPT.path=opt_init,translator,optimizer,hir2lir,codegen
+
+#enable profiling of all virtual calls
+-XX:jit.SD1_OPT.arg.optimizer.vp_instrument.profile_abstract=true
+
+-XX:jit.SD2_OPT.path.optimizer=ssa,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic,inline,purge,simplify,dce,uce,osr_path,escape_path,dce,uce,hvn,dce,uce,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,autovect,dessa,ssa,memopt,dce,uce,hvn,dce,uce,gcm,dessa,statprof
+-XX:jit.SD2_OPT.path.osr_path=gcm,osr,simplify,dce,uce
+-XX:jit.SD2_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.SD2_OPT.path.abce=memopt,dce,uce,simplify,dce,uce,classic_abcd,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce
+-XX:jit.SD2_OPT.path.codegen=lock_method,bbp,gcpoints,cafl,dce1,i8l-,api_magic,light_jni-,early_prop-,itrace-,native,cg_fastArrayFill,constraints,dce2,regalloc,spillgen,layout,copy,rce-,stack,break-,iprof-,emitter!,si_insts,gcmap,info,unlock_method
+-XX:jit.SD2_OPT.path.dce1=cg_dce
+-XX:jit.SD2_OPT.path.dce2=cg_dce
+
+#devirt configuration
+-XX:jit.SD2_OPT.path.devirt_virtual=devirt
+-XX:jit.SD2_OPT.path.devirt_intf=devirt
+-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_intf_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_virtual_calls=false
+
+#inliner configuration
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.filter=-
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path=ssa,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic
+-XX:jit.SD2_OPT.arg.optimizer.inline.pipeline=SD2_OPT_inliner_pipeline
+-XX:jit.SD2_OPT.arg.optimizer.inline.connect_early=false
+
+#devirt configuration for inliner pipeline
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path.devirt_virtual=devirt
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path.devirt_intf=devirt
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_intf_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_virtual_calls=false
+
+#helper inliner configuration
+-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.filter=-
+-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.path=ssa
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.pipeline=SD2_OPT_helper_inliner_pipeline
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE=off
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE=off
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0=off
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST=off
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF=off
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.codegen.dce1.early=yes
+-XX:jit.arg.codegen.emitter.align=0
+
+#system properties
+-Djava.compiler=server

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_static_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_static_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_static_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/em64t/server_static_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,93 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# EM configuration file for OPT-only mode of Jitrino with server optimization path. This is 'server static' mode
+
+chains=chain1
+chain1.jits=SS_OPT
+SS_OPT.file=jitrino
+
+#register allocator configuration
+-XDjit.RA2.filter=-
+-XDjit.RA2.path=bp_regalloc1,bp_regalloc2
+-XDjit.RA2.path.bp_regalloc1=bp_regalloc
+-XDjit.RA2.path.bp_regalloc2=bp_regalloc
+-XDjit.RA2.arg.bp_regalloc1.regs=ALL_GP
+-XDjit.RA2.arg.bp_regalloc2.regs=ALL_XMM
+-XDjit.RA3.filter=-
+-XDjit.RA3.path=webmaker,cg_regalloc
+-XDjit.RA3.arg.webmaker.calc=true
+
+-XX:jit.SS_OPT.path=opt_init,lock_method,translator,optimizer,hir2lir,codegen,unlock_method
+
+-XX:jit.SS_OPT.path.optimizer=ssa,simplify,dce,uce,statprof,devirt_virtual,unguard,devirt_intf,hlo_api_magic,inline,purge,simplify,dce,uce,osr_path,escape_path,dce,uce,hvn,dce,uce,inline_helpers-,purge,simplify,uce,dce,uce,abce,lower,dce,uce,autovect,dessa,ssa,memopt,dce,uce,hvn,dce,uce,gcm,dessa,statprof
+-XX:jit.SS_OPT.path.osr_path=gcm,osr,simplify,dce,uce
+-XX:jit.SS_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.SS_OPT.path.abce=memopt,dce,uce,simplify,dce,uce,classic_abcd,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce
+-XX:jit.SS_OPT.path.codegen=bbp,gcpoints,cafl,dce1,i8l-,api_magic,light_jni-,early_prop-,itrace-,native,cg_fastArrayFill,constraints,dce2,regalloc,spillgen,layout,copy,rce-,stack,break-,iprof-,emitter!,si_insts,gcmap,info
+-XX:jit.SS_OPT.path.dce1=cg_dce
+-XX:jit.SS_OPT.path.dce2=cg_dce
+
+#devirt configuration
+-XX:jit.SS_OPT.path.devirt_virtual=devirt
+-XX:jit.SS_OPT.path.devirt_intf=devirt
+-XX:jit.SS_OPT.arg.optimizer.devirt_intf.devirt_intf_calls=true
+-XX:jit.SS_OPT.arg.optimizer.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SS_OPT.arg.optimizer.devirt_intf.devirt_virtual_calls=false
+
+#inliner configuration
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.filter=-
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.path=ssa,simplify,dce,uce,statprof,devirt_virtual,unguard,devirt_intf,hlo_api_magic
+-XX:jit.SS_OPT.arg.optimizer.inline.pipeline=SS_OPT_inliner_pipeline
+-XX:jit.SS_OPT.arg.optimizer.inline.connect_early=false
+
+#devirt configuration for inliner pipeline
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.path.devirt_virtual=devirt
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.path.devirt_intf=devirt
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.arg.devirt_intf.devirt_intf_calls=true
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.arg.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.arg.devirt_intf.devirt_virtual_calls=false
+
+#helper inliner configuration
+-XX:jit.SS_OPT.SS_OPT_helper_inliner_pipeline.filter=-
+-XX:jit.SS_OPT.SS_OPT_helper_inliner_pipeline.path=ssa
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.pipeline=SS_OPT_helper_inliner_pipeline
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE=off
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE=off
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0=off
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST=off
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF=off
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.codegen.dce1.early=yes
+-XX:jit.arg.codegen.emitter.align=0
+
+#system properties
+-Djava.compiler=server static

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/opt_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/opt_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/opt_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/opt_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,57 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# EM configuration file for CS_OPT-only mode of Jitrino. This is 'client static' mode
+
+chains=chain1
+chain1.jits=CS_OPT
+CS_OPT.file=jitrino
+
+
+# Options to be passed to JIT
+
+-XX:jit.CS_OPT.path=opt_init,lock_method,translator,optimizer,hir2lir,codegen,unlock_method
+
+-XX:jit.CS_OPT.path.optimizer=ssa,devirt,hlo_api_magic,inline,purge,simplify,dce,uce,osr_path-,lazyexc,throwopt,escape_path,dce,uce,memopt,simplify,dce,uce,abce,lower,autovect,dessa,ssa,statprof,unroll,ssa,simplify,dce,uce,dessa,statprof
+-XX:jit.CS_OPT.path.osr_path=gcm,osr,simplify,dce,uce
+-XX:jit.CS_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.CS_OPT.path.abce=memopt,dce,uce,simplify,dce,uce,classic_abcd,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce
+-XX:jit.CS_OPT.path.codegen=bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,light_jni-,early_prop,peephole,itrace-,native,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info
+-XX:jit.CS_OPT.path.dce1=cg_dce
+-XX:jit.CS_OPT.path.dce2=cg_dce
+-XX:jit.CS_OPT.path.regalloc=bp_regalloc1,bp_regalloc2
+-XX:jit.CS_OPT.path.bp_regalloc1=bp_regalloc
+-XX:jit.CS_OPT.path.bp_regalloc2=bp_regalloc
+
+#inliner configuration
+-XX:jit.CS_OPT.CS_OPT_inliner_pipeline.filter=-
+-XX:jit.CS_OPT.CS_OPT_inliner_pipeline.path=ssa,devirt,hlo_api_magic
+-XX:jit.CS_OPT.arg.optimizer.inline.pipeline=CS_OPT_inliner_pipeline
+
+
+-XX:jit.CS_OPT.arg.codegen.dce1.early=yes
+-XX:jit.CS_OPT.arg.codegen.regalloc.bp_regalloc1.regs=ALL_GP
+-XX:jit.CS_OPT.arg.codegen.regalloc.bp_regalloc2.regs=ALL_XMM
+
+-XX:jit.CS_OPT.arg.codegen.btr.insertCMOVs=no
+-XX:jit.CS_OPT.arg.codegen.btr.removeConstCompare=yes
+-XX:jit.arg.codegen.emitter.align=4
+
+#-XX:jit.CS_OPT.arg.log.irdump.file=log/%jit%/%log%/%seqnb%_%class%.%method%.log
+#-XX:jit.CS_OPT.arg.log=ct,ir,irdump,all
+
+
+#system properties
+-Djava.compiler=client static

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_aggressive_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_aggressive_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_aggressive_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_aggressive_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,163 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#EM configuration for 'server' mode of Jitrino
+chains=chain1,chain2
+chain1.jits=JET_CLINIT
+chain2.jits=SD1_OPT,SD2_OPT
+
+chain1.filter=+::<clinit>
+chain1.filter=-
+
+JET_CLINIT.file=jitrino
+SD1_OPT.file=jitrino
+SD2_OPT.file=jitrino
+
+# Edge profiler and recompilation parameters
+EDGE_PROF.profilerType=EDGE_PROFILER
+EDGE_PROF.entryThreshold=40000
+EDGE_PROF.backedgeThreshold=150000
+EDGE_PROF.tbsTimeout=10
+EDGE_PROF.tbsInitialTimeout=0
+
+VALUE_PROF.profilerType=VALUE_PROFILER
+VALUE_PROF.vpalgo=TNV_FIRST_N
+VALUE_PROF.updateStrategy=LOCKED
+VALUE_PROF.vpSteadySize=4
+SD1_OPT.genProfile=EDGE_PROF,VALUE_PROF
+SD2_OPT.useProfile=EDGE_PROF,VALUE_PROF
+
+#options for JIT
+
+-XX:jit.JET_CLINIT.path=
+
+#register allocator configuration
+-XX:jit.RA2.filter=-
+-XX:jit.RA2.path=bp_regalloc1,bp_regalloc2
+-XX:jit.RA2.path.bp_regalloc1=bp_regalloc
+-XX:jit.RA2.path.bp_regalloc2=bp_regalloc
+-XX:jit.RA2.arg.bp_regalloc1.regs=ALL_GP
+-XX:jit.RA2.arg.bp_regalloc2.regs=ALL_XMM
+-XX:jit.RA3.filter=-
+-XX:jit.RA3.path=webmaker,cg_regalloc,spillgen
+-XX:jit.RA3.arg.webmaker.calc=true
+-XX:jit.arg.codegen.regalloc.opnds=10000
+
+-XX:jit.SD1_OPT.path=opt_init,lock_method,translator,optimizer,hir2lir,codegen,unlock_method
+
+
+-XX:jit.SD1_OPT.path.optimizer=ssa,simplify,dce,uce,vp_instrument,edge_instrument,dessa,statprof
+-XX:jit.SD1_OPT.path.codegen=bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,early_prop,global_prop,peephole,itrace-,native,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info
+-XX:jit.SD1_OPT.path.dce1=cg_dce
+-XX:jit.SD1_OPT.path.dce2=cg_dce
+
+-XX:jit.SD1_OPT.arg.codegen.dce1.early=yes
+-XX:jit.SD1_OPT.arg.codegen.btr.insertCMOVs=no
+-XX:jit.SD1_OPT.arg.codegen.btr.removeConstCompare=yes
+
+#enable profiling of all virtual calls
+-XX:jit.SD1_OPT.arg.optimizer.vp_instrument.profile_all_virtual=true
+
+
+-XX:jit.SD2_OPT.path=opt_init,translator,optimizer,hir2lir,codegen
+
+-XX:jit.SD2_OPT.path.optimizer=ssa,simplify,dce,uce,edge_annotate,devirt,hlo_api_magic,inline,purge,osr_path-,simplify,dce,uce,lazyexc,throwopt,escape_path,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,autovect,dessa,ssa,statprof,unroll,ssa,simplify,dce,uce,memopt,dce,uce,hvn,dce,uce,gcm,dessa,statprof,markglobals
+-XX:jit.SD2_OPT.path.osr_path=simplify,dce,uce,gcm,osr
+-XX:jit.SD2_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.SD2_OPT.path.abce=memopt,dce,uce,simplify,dce,uce,classic_abcd,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce
+
+-XX:jit.SD2_OPT.path.codegen=lock_method,bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,early_prop,global_prop,peephole,itrace-,native,cg_fastArrayFill,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info,unlock_method
+-XX:jit.SD2_OPT.path.dce1=cg_dce
+-XX:jit.SD2_OPT.path.dce2=cg_dce
+
+
+-XX:jit.SD2_OPT.arg.String_indexOf_as_magic=true
+
+#devirt configuration
+-XX:jit.SD2_OPT.arg.optimizer.devirt.devirt_intf_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt.devirt_abstract_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt.devirt_virtual_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt.devirt_using_profile=true
+
+#inliner configuration
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.filter=-
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path=ssa,simplify,dce,uce,edge_annotate,devirt,hlo_api_magic
+-XX:jit.SD2_OPT.arg.optimizer.inline.pipeline=SD2_OPT_inliner_pipeline
+-XX:jit.SD2_OPT.arg.optimizer.inline.connect_early=false
+#devirt configuration for inliner pipeline
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt.devirt_intf_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt.devirt_abstract_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt.devirt_virtual_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt.devirt_using_profile=true
+
+#helper inliner configuration
+-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.filter=-
+-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.path=ssa
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.pipeline=SD2_OPT_helper_inliner_pipeline
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.codegen.dce1.early=yes
+-XX:jit.SD2_OPT.arg.codegen.btr.insertCMOVs=no
+-XX:jit.SD2_OPT.arg.codegen.btr.removeConstCompare=yes
+-XX:jit.arg.codegen.emitter.align=4
+
+#system properties
+-Djava.compiler=server
+
+-XX:jit.arg.optimizer.inline.growth_factor=210
+-XX:jit.arg.optimizer.inline.min_stop=280
+-XX:jit.arg.optimizer.inline.min_benefit_threshold=70
+-XX:jit.arg.optimizer.inline.inline_small_method_max_size=67
+-XX:jit.arg.optimizer.inline.inline_small_method_bonus=780
+-XX:jit.arg.optimizer.inline.medium_method_max_size=1200
+-XX:jit.arg.optimizer.inline.medium_method_bonus=770
+-XX:jit.arg.optimizer.inline.large_method_min_size=1360
+-XX:jit.arg.optimizer.inline.large_method_penalty=480
+-XX:jit.arg.optimizer.inline.loop_bonus=140
+-XX:jit.arg.optimizer.inline.leaf_bonus=2680
+-XX:jit.arg.optimizer.inline.synch_bonus=50
+-XX:jit.arg.optimizer.inline.recursion_penalty=730
+-XX:jit.arg.optimizer.inline.exact_single_parameter_bonus=120
+-XX:jit.arg.optimizer.inline.exact_all_parameter_bonus=170
+-XX:jit.arg.optimizer.inline.skip_exception_path=true
+-XX:jit.arg.optimizer.inline.connect_early=true
+-XX:jit.arg.optimizer.inline.skip_api_magics=true
+-XX:jit.arg.optimizer.inline.sync_optcatch=false
+-XX:jit.arg.optimizer.inline.sync_optimistic=true
+    
+
+-XX:jit.arg.lazyResolution=off
+-XX:jit.arg.opt_init.rept_aggressive=true
+

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,148 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# EM configuration for 'server' mode of Jitrino
+#
+# When changing configuration for SD2_OPT JIT, do not forget to reflect the same
+#   changes for SS_OPT JIT in server_static.emconf (used for debugging purposes)
+#
+# rules for server -> server_static conversion
+#     JET_CLINIT -> SS_OPT
+#     inline_helpers -> inline_helpers-
+#     edge_annotate -> statprof
+
+chains=chain1,chain2
+chain1.jits=JET_CLINIT
+chain2.jits=SD1_OPT,SD2_OPT
+
+chain1.filter=+.<clinit>
+chain1.filter=-
+
+JET_CLINIT.file=jitrino
+SD1_OPT.file=jitrino
+SD2_OPT.file=jitrino
+
+# Edge profiler and recompilation parameters
+EDGE_PROF.profilerType=EDGE_PROFILER
+EDGE_PROF.entryThreshold=40000
+EDGE_PROF.backedgeThreshold=150000
+EDGE_PROF.tbsTimeout=10
+EDGE_PROF.tbsInitialTimeout=0
+
+VALUE_PROF.profilerType=VALUE_PROFILER
+VALUE_PROF.vpalgo=TNV_FIRST_N
+VALUE_PROF.updateStrategy=LOCKED_INSERT
+VALUE_PROF.vpSteadySize=4
+SD1_OPT.genProfile=EDGE_PROF,VALUE_PROF
+SD2_OPT.useProfile=EDGE_PROF,VALUE_PROF
+
+#options for JIT
+
+-XX:jit.JET_CLINIT.path=
+
+#register allocator configuration
+-XDjit.RA2.filter=-
+-XDjit.RA2.path=bp_regalloc1,bp_regalloc2
+-XDjit.RA2.path.bp_regalloc1=bp_regalloc
+-XDjit.RA2.path.bp_regalloc2=bp_regalloc
+-XDjit.RA2.arg.bp_regalloc1.regs=ALL_GP
+-XDjit.RA2.arg.bp_regalloc2.regs=ALL_XMM
+-XDjit.RA3.filter=-
+-XDjit.RA3.path=webmaker,cg_regalloc
+-XDjit.RA3.arg.webmaker.calc=true
+
+-XX:jit.SD1_OPT.path=opt_init,lock_method,translator,optimizer,hir2lir,codegen,unlock_method
+
+-XX:jit.SD1_OPT.path.optimizer=ssa,simplify,dce,uce,vp_instrument,devirt_virtual,edge_instrument,dessa,statprof
+-XX:jit.SD1_OPT.path.devirt_virtual=devirt
+-XX:jit.SD1_OPT.path.codegen=bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,light_jni-,early_prop,global_prop,peephole,itrace-,native,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info
+-XX:jit.SD1_OPT.path.dce1=cg_dce
+-XX:jit.SD1_OPT.path.dce2=cg_dce
+
+-XX:jit.SD1_OPT.arg.codegen.dce1.early=yes
+-XX:jit.SD1_OPT.arg.codegen.btr.insertCMOVs=no
+-XX:jit.SD1_OPT.arg.codegen.btr.removeConstCompare=yes
+
+#enable profiling of all virtual calls
+-XX:jit.SD1_OPT.arg.optimizer.vp_instrument.profile_abstract=true
+
+-XX:jit.SD2_OPT.path=opt_init,translator,optimizer,hir2lir,codegen
+
+-XX:jit.SD2_OPT.path.optimizer=ssa,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic,inline,purge,simplify,dce,uce,osr_path,lazyexc,throwopt,escape_path,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,autovect,dessa,ssa,statprof,unroll,ssa,simplify,dce,uce,memopt,dce,uce,hvn,dce,uce,gcm,dessa,statprof
+-XX:jit.SD2_OPT.path.osr_path=gcm,osr,simplify,dce,uce
+-XX:jit.SD2_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.SD2_OPT.path.abce=memopt,dce,uce,simplify,dce,uce,classic_abcd,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce
+-XX:jit.SD2_OPT.path.codegen=lock_method,bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,light_jni-,early_prop,global_prop,peephole,itrace-,native,cg_fastArrayFill,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info,unlock_method
+-XX:jit.SD2_OPT.path.dce1=cg_dce
+-XX:jit.SD2_OPT.path.dce2=cg_dce
+
+#devirt configuration
+-XX:jit.SD2_OPT.path.devirt_virtual=devirt
+-XX:jit.SD2_OPT.path.devirt_intf=devirt
+-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_intf_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_virtual_calls=false
+
+#inliner configuration
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.filter=-
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path=ssa,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic
+-XX:jit.SD2_OPT.arg.optimizer.inline.pipeline=SD2_OPT_inliner_pipeline
+-XX:jit.SD2_OPT.arg.optimizer.inline.connect_early=false
+
+#devirt configuration for inliner pipeline
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path.devirt_virtual=devirt
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path.devirt_intf=devirt
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_intf_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_virtual_calls=false
+
+#helper inliner configuration
+-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.filter=-
+-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.path=ssa
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.pipeline=SD2_OPT_helper_inliner_pipeline
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_IDENTITY_HASHCODE=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_GET_IDENTITY_HASHCODE_hotnessPercent=0
+-XX:jit.arg.getIdentityHashCode=true
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF=on
+-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF_hotnessPercent=1
+
+-XX:jit.SD2_OPT.arg.codegen.dce1.early=yes
+-XX:jit.SD2_OPT.arg.codegen.btr.insertCMOVs=no
+-XX:jit.SD2_OPT.arg.codegen.btr.removeConstCompare=yes
+-XX:jit.SD2_OPT.arg.codegen.btr.eliminateSignCheck=yes
+-XX:jit.arg.codegen.emitter.align=4
+
+#system properties
+-Djava.compiler=server

Added: harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_static_autovect.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_static_autovect.emconf?rev=952017&view=auto
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_static_autovect.emconf (added)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/config/ia32/server_static_autovect.emconf Sun Jun  6 22:47:40 2010
@@ -0,0 +1,95 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# EM configuration file for OPT-only mode of Jitrino with server optimization path. This is 'server static' mode
+
+chains=chain1
+chain1.jits=SS_OPT
+SS_OPT.file=jitrino
+
+#register allocator configuration
+-XDjit.RA2.filter=-
+-XDjit.RA2.path=bp_regalloc1,bp_regalloc2
+-XDjit.RA2.path.bp_regalloc1=bp_regalloc
+-XDjit.RA2.path.bp_regalloc2=bp_regalloc
+-XDjit.RA2.arg.bp_regalloc1.regs=ALL_GP
+-XDjit.RA2.arg.bp_regalloc2.regs=ALL_XMM
+-XDjit.RA3.filter=-
+-XDjit.RA3.path=webmaker,cg_regalloc
+-XDjit.RA3.arg.webmaker.calc=true
+
+-XX:jit.SS_OPT.path=opt_init,translator,optimizer,hir2lir,codegen
+
+-XX:jit.SS_OPT.path.optimizer=ssa,simplify,dce,uce,devirt_virtual,statprof,unguard,devirt_intf,hlo_api_magic,inline,purge,simplify,dce,uce,osr_path,lazyexc,throwopt,escape_path,inline_helpers-,purge,simplify,uce,dce,uce,abce,lower,dce,uce,autovect,dessa,ssa,statprof,unroll,ssa,simplify,dce,uce,memopt,dce,uce,hvn,dce,uce,gcm,dessa,statprof
+-XX:jit.SS_OPT.path.osr_path=gcm,osr,simplify,dce,uce
+-XX:jit.SS_OPT.path.escape_path=hvn,simplify,dce,uce,escape
+-XX:jit.SS_OPT.path.abce=memopt,dce,uce,simplify,dce,uce,classic_abcd,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce
+-XX:jit.SS_OPT.path.codegen=lock_method,bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,light_jni-,early_prop,global_prop,peephole,itrace-,native,cg_fastArrayFill,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info,unlock_method
+-XX:jit.SS_OPT.path.dce1=cg_dce
+-XX:jit.SS_OPT.path.dce2=cg_dce
+
+#devirt configuration
+-XX:jit.SS_OPT.path.devirt_virtual=devirt
+-XX:jit.SS_OPT.path.devirt_intf=devirt
+-XX:jit.SS_OPT.arg.optimizer.devirt_intf.devirt_intf_calls=true
+-XX:jit.SS_OPT.arg.optimizer.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SS_OPT.arg.optimizer.devirt_intf.devirt_virtual_calls=false
+
+#inliner configuration
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.filter=-
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.path=ssa,simplify,dce,uce,devirt_virtual,unguard,devirt_intf,hlo_api_magic
+-XX:jit.SS_OPT.arg.optimizer.inline.pipeline=SS_OPT_inliner_pipeline
+-XX:jit.SS_OPT.arg.optimizer.inline.connect_early=false
+
+#devirt configuration for inliner pipeline
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.path.devirt_virtual=devirt
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.path.devirt_intf=devirt
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.arg.devirt_intf.devirt_intf_calls=true
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.arg.devirt_intf.devirt_abstract_calls=true
+-XX:jit.SS_OPT.SS_OPT_inliner_pipeline.arg.devirt_intf.devirt_virtual_calls=false
+
+#helper inliner configuration
+-XX:jit.SS_OPT.SS_OPT_helper_inliner_pipeline.filter=-
+-XX:jit.SS_OPT.SS_OPT_helper_inliner_pipeline.path=ssa
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.pipeline=SS_OPT_helper_inliner_pipeline
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_RESOLVED_USING_VTABLE_AND_SIZE_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_NEW_VECTOR_USING_VTABLE_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_ENTER_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_MONITOR_EXIT_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_GET_INTERFACE_VTABLE_VER0_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_CHECKCAST_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF=on
+-XX:jit.SS_OPT.arg.optimizer.inline_helpers.VM_RT_INSTANCEOF_hotnessPercent=1
+
+-XX:jit.SS_OPT.arg.codegen.dce1.early=yes
+-XX:jit.SS_OPT.arg.codegen.btr.insertCMOVs=no
+-XX:jit.SS_OPT.arg.codegen.btr.removeConstCompare=yes
+-XX:jit.arg.codegen.emitter.align=4
+
+#system properties
+-Djava.compiler=server static

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h Sun Jun  6 22:47:40 2010
@@ -49,7 +49,9 @@ public:
         I4, I4_Ovf, U4_Ovf,
         I8, I8_Ovf, U8_Ovf,
         I,  I_Ovf,  U_Ovf,
-        F,  S,        D
+        F,  S,        D,
+        VI1_16, VI2_8, VI4_4, VI8_2,
+        VS_4, VD_2
     };
 };
 
@@ -65,7 +67,8 @@ public:
     enum Types {
         I4,
         I8,
-        I
+        I,
+        VI1_16, VI2_8, VI4_4, VI8_2
     };
 };
 
@@ -75,7 +78,9 @@ public:
         I4,    U4,
         I8,    U8,
         I,     U,
-        F,  S,  D
+        F,  S,  D,
+        VI1_16, VI2_8, VI4_4, VI8_2,
+        VS_4, VD_2
     };
 };
 
@@ -92,7 +97,9 @@ public:
         I4,
         I8,
         I,
-        F, S, D
+        F, S, D,
+        VI1_16, VI2_8, VI4_4, VI8_2,
+        VS_4, VD_2
     };
 };
 
@@ -103,6 +110,8 @@ public:
         I8,
         I,
         F, S, D,
+        VI1_16, VI2_8, VI4_4, VI8_2,
+        VS_4, VD_2,
         Ref,
         CompRef
     };
@@ -125,6 +134,8 @@ public:
         I4,
         I8,
         I,
+        VI1_16, VI2_8, VI4_4, VI8_2,
+        VS_4, VD_2,
         Ref,
         CompRef
     };
@@ -133,7 +144,8 @@ public:
 class ConvertToIntOp {
 public:
     enum Types {
-        I1, I2, I4, I8, I
+        I1, I2, I4, I8, I,
+        VI1_16, VI2_8, VI4_4, VI8_2
     };
     enum OverflowMod {
         NoOvf,
@@ -147,6 +159,7 @@ public:
     enum Types {
         Single,
         Double,
+        VS_4, VD_2,
         FloatFromUnsigned
     };
 };
@@ -201,6 +214,7 @@ public:
     virtual CG_OpndHandle*  and_(IntegerOp::Types,CG_OpndHandle* src1,CG_OpndHandle* src2) = 0;
     virtual CG_OpndHandle*  or_(IntegerOp::Types,CG_OpndHandle* src1,CG_OpndHandle* src2) = 0;
     virtual CG_OpndHandle*  xor_(IntegerOp::Types,CG_OpndHandle* src1,CG_OpndHandle* src2) = 0;
+    virtual CG_OpndHandle*  andnot_(IntegerOp::Types,CG_OpndHandle* src1,CG_OpndHandle* src2) = 0;
     virtual CG_OpndHandle*  not_(IntegerOp::Types,CG_OpndHandle* src) = 0;
     virtual CG_OpndHandle*  shladd(IntegerOp::Types,CG_OpndHandle* value,
                                    U_32 shiftamount,
@@ -242,6 +256,7 @@ public:
                                       ConvertToIntOp::OverflowMod,
                                       Type* dstType, CG_OpndHandle* src) = 0;
     virtual CG_OpndHandle*  convToFp(ConvertToFpOp::Types, Type* dstType, CG_OpndHandle* src) = 0;
+    virtual CG_OpndHandle*  convToVector(VectorType* dstType, CG_OpndHandle* src, bool is_zero_extend) = 0;
 
     virtual CG_OpndHandle*  ldFunAddr(Type* dstType, MethodDesc *desc) = 0; 
     virtual CG_OpndHandle*  tau_ldVirtFunAddr(Type* dstType, CG_OpndHandle* vtableAddr, 
@@ -452,6 +467,16 @@ public:
     virtual CG_OpndHandle*  catchException(Type * exceptionType) = 0;
     virtual void prefetch(CG_OpndHandle *addr) = 0;
 
+    virtual CG_OpndHandle*  vecAddSub(Type *dst_type, CG_OpndHandle* src1, CG_OpndHandle* src2) = 0;
+    virtual CG_OpndHandle*  vecHadd(Type *dst_type, CG_OpndHandle* src1, CG_OpndHandle* src2) = 0;
+    virtual CG_OpndHandle*  vecHsub(Type *dst_type, CG_OpndHandle* src1, CG_OpndHandle* src2) = 0;
+    virtual CG_OpndHandle*  vecShuffle(Type *dst_type, CG_OpndHandle* src1, CG_OpndHandle* src2,
+                                       CG_OpndHandle* pattern) = 0;
+    virtual CG_OpndHandle*  vecExtract(Type *dst_type, CG_OpndHandle* src, CG_OpndHandle* index) = 0;
+    virtual CG_OpndHandle*  vecPackScalars(Type *dst_type, U_32 numSrcs, CG_OpndHandle** srcs) = 0;
+    virtual CG_OpndHandle*  vecInterleave(bool high, Type *dst_type, CG_OpndHandle* src1, CG_OpndHandle* src2) = 0;
+    virtual CG_OpndHandle*  vecCmpStr(Type *dst_type, U_32 numSrcs, CG_OpndHandle** srcs) = 0;
+
     virtual void pseudoInst() = 0;
 
     virtual void methodEntry(MethodDesc* mDesc) = 0;

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp Sun Jun  6 22:47:40 2010
@@ -171,7 +171,7 @@ bool Encoder::matches(const OpcodeGroup*
         }
     }
     for (U_32 i = 0, n = fi.opndCount; i < n; i++) {
-        U_32 idx = fi.isExtended ? og->extendedToNativeMap[i] : i;
+        U_32 idx = i;
         Constraint co=fi.opndConstraints[idx];
         if (any) {
             co = Constraint(OpndKind_Any, co.getSize());

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp Sun Jun  6 22:47:40 2010
@@ -603,6 +603,72 @@ void I8Lowerer::applyMnemonic(Inst* inst
                 lowerDiv64(inst);
             }
             break;
+        case Mnemonic_MOVQ:
+        {
+            Opnd *cnt1 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), 1);
+            irManager->newInstEx(Mnemonic_MOVD, 1, dst, src1_1)->insertBefore(inst);
+            irManager->newInstEx(Mnemonic_PINSRD, 1, dst, dst, src1_2, cnt1)->insertBefore(inst);
+            break;
+        }
+        case Mnemonic_UNPCKLPD:
+        {
+            Opnd *cnt1 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), 1);
+            Opnd *cnt2 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), 2);
+            Opnd *cnt3 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), 3);
+            irManager->newInstEx(Mnemonic_MOVD, 1, dst, src1_1)->insertBefore(inst);
+            irManager->newInstEx(Mnemonic_PINSRD, 1, dst, dst, src1_2, cnt1)->insertBefore(inst);
+            irManager->newInstEx(Mnemonic_PINSRD, 1, dst, dst, src2_1, cnt2)->insertBefore(inst);
+            irManager->newInstEx(Mnemonic_PINSRD, 1, dst, dst, src2_2, cnt3)->insertBefore(inst);
+            break;
+        }
+        case Mnemonic_PEXTRQ:
+        {
+            int idx = src2->getImmValue () * 2;
+#ifdef _HAVE_SIMD_4_2_
+            // Generates SSE4 instructions
+            Opnd *cnt1 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), idx);
+            Opnd *cnt2 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), idx + 1);
+            irManager->newInstEx(Mnemonic_PEXTRD, 1, dst_1, src1, cnt1)->insertBefore(inst);
+            irManager->newInstEx(Mnemonic_PEXTRD, 1, dst_2, src1, cnt2)->insertBefore(inst);
+#else
+            // For processors that don't support SSE4
+            if (idx == 0)
+              irManager->newInstEx(Mnemonic_MOVD, 1, dst_1, src1)->insertBefore(inst);
+            else
+              {
+                Opnd *cnt1 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), idx * 4);
+                Opnd *temp1 = irManager->newOpnd(src1->getType());
+                irManager->newInstEx(Mnemonic_PSRLDQ, 1, temp1, src1, cnt1)->insertBefore(inst);
+                irManager->newInstEx(Mnemonic_MOVD, 1, dst_1, temp1)->insertBefore(inst);
+              }
+            Opnd *cnt2 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), (idx + 1) * 4);
+            Opnd *temp2 = irManager->newOpnd(src1->getType());
+            irManager->newInstEx(Mnemonic_PSRLDQ, 1, temp2, src1, cnt2)->insertBefore(inst);
+            irManager->newInstEx(Mnemonic_MOVD, 1, dst_2, temp2)->insertBefore(inst);
+#endif
+            break;
+        }
+        case Mnemonic_MOVDDUP:
+        {
+#ifdef _HAVE_SIMD_4_2_
+            // Generates SSE4 instructions
+            Opnd *cnt1 = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), 1);
+#endif
+            irManager->newInstEx(Mnemonic_MOVD, 1, dst, src1_1)->insertBefore(inst);
+#ifdef _HAVE_SIMD_4_2_
+            // Generates SSE4 instructions
+            irManager->newInstEx(Mnemonic_PINSRD, 1, dst, dst, src1_2, cnt1)->insertBefore(inst);
+#else
+            // For processors that don't support SSE4
+            Opnd *temp = irManager->newOpnd (dst->getType());
+            Opnd *cnt = irManager->newImmOpnd (irManager->getTypeManager().getInt8Type(), 4);
+            irManager->newInstEx (Mnemonic_MOVD, 1, temp, src1_2)->insertBefore(inst);
+            irManager->newInstEx (Mnemonic_PSLLDQ, 1, temp, temp, cnt)->insertBefore(inst);
+            irManager->newInstEx (Mnemonic_POR, 1, dst, dst, temp)->insertBefore(inst);
+#endif
+            irManager->newInstEx(Mnemonic_MOVDDUP, 1, dst, dst)->insertBefore(inst);
+            break;
+        }
         default :   
             assert(0);
     }

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h Sun Jun  6 22:47:40 2010
@@ -42,7 +42,7 @@ const U_32 EmptyUint32=((U_32)-1);
 const U_32 UnknownId=EmptyUint32;
 
 const U_32 IRMaxExtendedOpnds=8;
-const U_32 IRMaxNativeOpnds=4;
+const U_32 IRMaxNativeOpnds=6;
 const U_32 IRMaxInstOpnds=512;
 
 const U_32 IRMaxOperandByteSize = 16;

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp Sun Jun  6 22:47:40 2010
@@ -297,7 +297,7 @@ void IRManager::initInitialConstraints()
 Constraint IRManager::createInitialConstraint(Type::Tag t)const
 {
     OpndSize sz=getTypeSize(t);
-    if (t==Type::Single||t==Type::Double||t==Type::Float)
+    if (t==Type::Single||t==Type::Double||t==Type::Float||t==Type::Vector)
         return Constraint(OpndKind_XMMReg, sz)|Constraint(OpndKind_Mem, sz);
     if (sz<=Constraint::getDefaultSize(OpndKind_GPReg))
         return Constraint(OpndKind_GPReg, sz)|Constraint(OpndKind_Mem, sz)|Constraint(OpndKind_Imm, sz);
@@ -408,7 +408,7 @@ Inst * IRManager::newI8PseudoInst(Mnemon
     inst->kind = Inst::Kind_I8PseudoInst;
     U_32 i=0;
     Opnd ** opnds = inst->getOpnds();
-    assert(opnd0->getType()->isInteger() ||opnd0->getType()->isPtr());
+    assert(opnd0->getType()->isInteger() ||opnd0->getType()->isPtr() || opnd0->getType()->isVector());
     if (opnd0!=NULL){       opnds[i] = opnd0; i++;
     if (opnd1!=NULL){       opnds[i] = opnd1; i++;
     if (opnd2!=NULL){       opnds[i] = opnd2; i++;
@@ -1053,8 +1053,8 @@ Inst * IRManager::newCopySequence(Opnd *
     OpndKind targetKind=(OpndKind)targetConstraint.getKind();
     OpndKind sourceKind=(OpndKind)sourceConstraint.getKind();
 
-#if defined(_DEBUG) || !defined(_EM64T_)
     OpndSize targetSize=targetConstraint.getSize();
+#if defined(_DEBUG) || !defined(_EM64T_)
     assert(targetSize<=sourceSize); // only same size or truncating conversions are allowed
 #endif
 
@@ -1152,13 +1152,11 @@ Inst * IRManager::newCopySequence(Opnd *
         if (sourceByteSize==4){
             return newInst(Mnemonic_MOVSS,targetOpnd, sourceOpnd);
         }else if (sourceByteSize==8){
-            bool regsOnly = targetKind==OpndKind_XMMReg && sourceKind==OpndKind_XMMReg;
-            if (regsOnly && CPUID::isSSE2Supported()) {
-                return newInst(Mnemonic_MOVAPD, targetOpnd, sourceOpnd);
-            } else  {
-                return newInst(Mnemonic_MOVSD, targetOpnd, sourceOpnd);
-            }
+            return newInst(Mnemonic_MOVSD, targetOpnd, sourceOpnd);
+        }else if (sourceByteSize==16) {
+            return newInst(Mnemonic_MOVAPD, targetOpnd, sourceOpnd);
         }
+        assert(0);
     }else if (targetKind==OpndKind_FPReg && sourceKind==OpndKind_Mem){
         sourceOpnd->setMemOpndAlignment(Opnd::MemOpndAlignment_16);
         return newInst(Mnemonic_FLD, targetOpnd, sourceOpnd);
@@ -1184,6 +1182,14 @@ Inst * IRManager::newCopySequence(Opnd *
         appendToInstList(instList, newCopySequence(targetOpnd, tmp, regUsageMask));
         return instList;
     }
+
+    if (targetOpnd->isPlacedIn(OpndKind_XMMReg)
+        && sourceOpnd->isPlacedIn(OpndKind_Mem)){
+      if (targetSize == OpndSize_128 && sourceSize == OpndSize_64) {
+        return newInst(Mnemonic_MOVLPD, targetOpnd, sourceOpnd);
+      }
+    }
+
     assert(0);
     return NULL;
 }
@@ -1417,6 +1423,9 @@ OpndSize IRManager::getTypeSize(Type::Ta
         case Type::Float:
             size = OpndSize_80;
             break;
+        case Type::Vector:
+            size = OpndSize_128;
+            break;
         default:
 #ifdef _EM64T_
             size = (tag>=Type::CompressedSystemObject && tag<=Type::CompressedVTablePtr)?OpndSize_32:OpndSize_64;

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h Sun Jun  6 22:47:40 2010
@@ -181,7 +181,7 @@ public:
 
     Inst * newInstEx(Mnemonic mnemonic, U_32 defCount, 
         Opnd * opnd0, Opnd * opnd1, Opnd * opnd2, Opnd * opnd3, 
-        Opnd * opnd4, Opnd * opnd5=0, Opnd * opnd6=0, Opnd * opnd7=0
+        Opnd * opnd4=0, Opnd * opnd5=0, Opnd * opnd6=0, Opnd * opnd7=0
         );
 
     /** Creates a new branch instruction

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp Sun Jun  6 22:47:40 2010
@@ -540,7 +540,7 @@ void Inst::makeNative(IRManager * irMana
     U_32 * opndRoles = getOpndRoles();
     Constraint * constraints = getConstraints();
 
-    I_32 defs[IRMaxNativeOpnds]={ -1, -1, -1, -1 };
+    I_32 defs[IRMaxNativeOpnds]={ -1, -1, -1, -1, -1, -1 };
     for (U_32 i=0; i<opndCount; i++){
         U_32 r = opndRoles[i];
         if ((r & OpndRole_Explicit) == 0) continue;

Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h?rev=952017&r1=952016&r2=952017&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h Sun Jun  6 22:47:40 2010
@@ -750,6 +750,7 @@ public:
            m==Mnemonic_MOVS16 ||
            m==Mnemonic_MOVS32 ||
            m==Mnemonic_MOVS64 ||
+           m==Mnemonic_PINSRD ||
            m==Mnemonic_STOS   ||
            m==Mnemonic_STD    ||
            m==Mnemonic_CLD    ||