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 ||