51 Commits

Author SHA1 Message Date
Michael C Berg
a880f3d139 8078563: Restrict reduction optimization
Reviewed-by: kvn, twisti
2015-04-29 15:34:04 -07:00
Vladimir Kozlov
81bb7521bd 8076523: assert(((ABS(iv_adjustment_in_bytes) % elt_size) == 0)) fails in superword.cpp
Check that offset % mem_oper_size == 0 when alignment is verified during vectorization.

Reviewed-by: iveresov
2015-04-02 17:16:39 -07:00
Michael C Berg
9e55e44c85 8074981: Integer/FP scalar reduction optimization
Add scalar reduction optimization to C2 to take advantage of vector instructions in modern x86 CPUs.

Reviewed-by: kvn, twisti
2015-04-01 18:07:50 -07:00
Vladimir Kozlov
7764490363 8052081: Optimize generated by C2 code for Intel's Atom processor
Allow to execute vectorization and crc32 optimization on Atom. Enable UseFPUForSpilling by default on x86.

Reviewed-by: roland
2014-08-05 15:02:10 -07:00
Tobias Hartmann
70a55eac34 8054033: Remove unused references to Compile*
Removed unused references to Compile* missed by JDK-8034812.

Reviewed-by: kvn, roland
2014-08-05 09:58:52 +02:00
Tobias Hartmann
2a0815a55e 8034812: remove IDX_INIT macro hack in Node class
The IDX_INIT macro used by Node::Node(...) to retrieve the Compile object is removed and replaced by a call to Compile::current(). The Node constructor, new operator and all calls to it are adapted accordingly.

Reviewed-by: kvn, jrose, iveresov, goetz
2014-06-02 08:07:29 +02:00
Vladimir Kozlov
26de6296e0 8041351: Crash in src/share/vm/opto/loopnode.cpp:3215 - assert(!had_error) failed: bad dominance
Add missing is_mem() check when we collect load nodes in SuperWord::co_locate_pack().

Reviewed-by: iveresov
2014-04-22 17:45:56 -07:00
Morris Meyer
6db303a301 8001532: C2 node files refactoring
Split C2 node files into cast, convert, countbits, intrinsic, move, narrowptr and opaquenode classes

Reviewed-by: kvn, morris
2014-04-01 09:05:20 -07:00
Niclas Adlertz
94a86285a7 8010500: [parfait] Possible null pointer dereference at hotspot/src/share/vm/opto/loopnode.hpp
Added NULL check for loopnode() in get_pre_loop_end()

Reviewed-by: kvn, roland
2014-02-26 07:46:46 +01:00
Mikael Vidstedt
a0da47fd66 8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013
Copyright year updated for files modified during 2013

Reviewed-by: twisti, iveresov
2013-12-24 11:48:39 -08:00
Vladimir Kozlov
656949d014 8004867: VM crashing with assert "share/vm/opto/node.hpp:357 - assert(i < _max) failed: oob"
Added few checks and early bailout from Superword optimization to avoid such cases in a future.

Reviewed-by: roland, twisti
2013-02-18 16:47:15 -08:00
Vladimir Kozlov
fc84b11227 8001635: assert(in_bb(n)) failed: must be
Added missed check that Load node is in processed loop block.

Reviewed-by: twisti
2012-10-26 11:48:04 -07:00
Vladimir Kozlov
a9c2b6a900 8001183: incorrect results of char vectors right shift operaiton
Do vector right shift operation for small int types only after loads

Reviewed-by: jrose, dlong
2012-10-23 13:06:37 -07:00
Vladimir Ivanov
6674423523 7199654: Remove LoadUI2LNode
Removed LoadUI2L node from Ideal nodes, use match rule in .ad files instead.

Reviewed-by: kvn
2012-10-09 12:40:05 -07:00
Vladimir Kozlov
e8332c76e9 7201026: add vector for shift count
Add generation of vectors for scalar shift count.

Reviewed-by: roland, twisti, dlong
2012-10-02 12:25:13 -07:00
Bharadwaj Yadavalli
d5d2e78faa 7193318: C2: remove number of inputs requirement from Node's new operator
Deleted placement new operator of Node - node(size_t, Compile *, int).

Reviewed-by: kvn, twisti
2012-09-27 09:38:42 -07:00
Vladimir Kozlov
973fdc81a1 7200264: 7192963 changes disabled shift vectors
Replaced is_vector_use() call with explicit check for vector shift's count.

Reviewed-by: twisti, roland, dlong, vlivanov
2012-09-25 15:48:17 -07:00
Vladimir Kozlov
25f18c20d9 7199010: incorrect vector alignment
Fixed vectors alignment when several arrays are accessed in one loop.

Reviewed-by: roland, twisti
2012-09-19 16:50:26 -07:00
Vladimir Kozlov
811c047ec1 7196199: java/text/Bidi/Bug6665028.java failed: Bidi run count incorrect
Save whole XMM/YMM registers in safepoint interrupt handler.

Reviewed-by: roland, twisti
2012-09-17 19:39:07 -07:00
Vladimir Kozlov
cbfca3259c 7192963: assert(_in[req-1] == this) failed: Must pass arg count to 'new'
Fixed Pack node generation. Not vectorize shift instructions if count is not the same for all shifts and if count is vector.

Reviewed-by: twisti
2012-08-22 11:55:40 -07:00
Vladimir Kozlov
ef4102148a 7192964: assert(false) failed: bad AD file
Shifts with loop variant counts "a[i]=1<<b[i];" should not be vectorized since hw does not support it.

Reviewed-by: twisti
2012-08-21 14:50:02 -07:00
Vladimir Kozlov
e3c3c8527e 6340864: Implement vectorization optimizations in hotspot-server
Added asm encoding and mach nodes for vector arithmetic instructions on x86.

Reviewed-by: roland
2012-08-20 09:07:21 -07:00
Vladimir Kozlov
b5b10846c2 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
Disable vectorization of a memory access with more elements per vector than one which is used for alignment on sparc

Reviewed-by: twisti
2012-06-19 15:12:56 -07:00
Vladimir Kozlov
d1191bb4f4 7119644: Increase superword's vector size up to 256 bits
Increase vector size up to 256-bits for YMM AVX registers on x86.

Reviewed-by: never, twisti, roland
2012-06-15 01:25:19 -07:00
Vlaidmir Ivanov
dd85e2f356 7173340: C2: code cleanup: use PhaseIterGVN::replace_edge(Node*, int, Node*) where applicable
Replace frequent C2 optimizer code patterns with new methods calls

Reviewed-by: kvn, twisti
2012-06-12 16:23:31 -07:00
Vladimir Kozlov
904f53db88 7160610: Unknown Native Code compilation issue
When constructing input vector use type of vector's operation which use it since element's sizes should match.

Reviewed-by: never, twisti
2012-05-07 12:37:46 -07:00
Vladimir Kozlov
52f678435a 7077439: Possible reference through NULL in loopPredicate.cpp:726
Use cl->is_valid_counted_loop() check.

Reviewed-by: never
2011-08-10 14:06:57 -07:00
Vladimir Kozlov
18329266ea 7069452: Cleanup NodeFlags
Remove flags which duplicate information in Node::NodeClasses.

Reviewed-by: never
2011-07-27 17:28:36 -07:00
Vladimir Kozlov
00eca5e982 7004535: Clone loop predicate during loop unswitch
Clone loop predicate for clonned loops

Reviewed-by: never
2011-04-02 10:54:15 -07:00
Stefan Karlsson
8006fe8f75 6989984: Use standard include model for Hospot
Replaced MakeDeps and the includeDB files with more standardized solutions.

Reviewed-by: coleenp, kvn, kamg
2010-11-23 13:22:55 -08:00
Vladimir Kozlov
448b83e288 6677629: PhaseIterGVN::subsume_node() should call hash_delete() and add_users_to_worklist()
Use replace_node() method instead of subsume_node().

Reviewed-by: jrose, never
2010-06-28 14:54:39 -07:00
Tom Rodriguez
154ae789ef 6958485: fix for 6879921 was insufficient
Reviewed-by: kvn
2010-06-07 14:17:01 -07:00
Erik Trimble
ba7c173659 6941466: Oracle rebranding changes for Hotspot repositories
Change all the Sun copyrights to Oracle copyright

Reviewed-by: ohair
2010-05-27 19:08:38 -07:00
Changpeng Fang
e3b5580ecc 6852078: HSX 14/16 in jdk 5.0: api/javax_management api/org_omg jck tests crashes or make tnameserv crash
Disable SuperWord optimization for unsafe read/write

Reviewed-by: kvn, phh
2009-10-30 10:12:52 -07:00
Changpeng Fang
1cf5b7ae11 6879921: CTW failure jdk6_18/hotspot/src/share/vm/utilities/globalDefinitions.cpp:268
Filter out non-primitives before deciding whether two ops can be packed

Reviewed-by: kvn, never
2009-09-15 11:09:34 -07:00
Changpeng Fang
c492f4cde5 6877254: Server vm crashes with no branches off of store slice" when run with CMS and UseSuperWord(default)
Design StoreCMNode::Ideal to promote its oopStore input if the input is a MergeMem node

Reviewed-by: kvn, never
2009-09-14 09:49:54 -07:00
Changpeng Fang
457be8ad49 6876276: assert(!is_visited,"visit only once")
Schedule the superword loads based on dependence constraints

Reviewed-by: kvn, never
2009-08-31 08:31:45 -07:00
Changpeng Fang
fface2e4ca 6636138: UseSuperWord enabled failure
Fixed SuperWord scheduling of memory operations.

Reviewed-by: kvn, never
2009-03-24 12:19:47 -07:00
Erik Trimble
8d6035660e Merge 2009-03-12 18:16:36 -07:00
Xiomara Jayasena
2be2e027b0 6814575: Update copyright year
Update copyright for files that have been modified in 2009, up to 03/09

Reviewed-by: katleman, tbell, ohair
2009-03-09 13:28:46 -07:00
Christian Thalinger
05d1de7727 6810672: Comment typos
I have collected some typos I have found while looking at the code.

Reviewed-by: kvn, never
2009-02-27 13:27:09 -08:00
Christian Thalinger
3b8452da93 6796746: rename LoadC (char) opcode class to LoadUS (unsigned short)
Renaming LoadC to LoadUS would round up the planned introduction of LoadUB and LoadUI.

Reviewed-by: phh, kvn
2009-01-26 16:22:12 +01:00
Vladimir Kozlov
50c4a23cac 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
Escape Analysis fixes.

Reviewed-by: never, rasbold
2008-07-28 17:12:52 -07:00
Erik Trimble
2d6f42d18c Merge 2008-07-11 01:14:44 -07:00
Xiomara Jayasena
c96a95c4b8 6719955: Update copyright year
Update copyright year for files that have been modified in 2008

Reviewed-by: ohair, tbell
2008-07-02 12:55:16 -07:00
Vladimir Kozlov
a671e7c7b5 6710487: More than half of JDI Regression tests hang with COOPs in -Xcomp mode
Remove DecodeNNode::decode() and EncodePNode::encode() methods.

Reviewed-by: rasbold, never
2008-06-24 10:43:29 -07:00
Coleen Phillimore
4a831d45f0 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv

Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
2008-04-13 17:43:42 -04:00
Tom Rodriguez
3093e354db 6646020: assert(in_bb(n),"must be in block") in -Xcomp mode
Reviewed-by: kvn, rasbold
2008-04-03 21:26:03 -07:00
Tom Rodriguez
a2b4f55757 6663621: JVM crashes while trying to execute api/java_security/Signature/SignatureTests.html#initSign tests
Alignment expression with secondary induction variables is sometimes wrong

Reviewed-by: kvn, rasbold
2008-03-20 10:43:42 -07:00
Vladimir Kozlov
9f1a8ede80 6633953: type2aelembytes{T_ADDRESS} should be 8 bytes in 64 bit VM
T_ADDRESS size is defined as 'int' size (4 bytes) but C2 use it for raw pointers and as memory type for StoreP and LoadP nodes.

Reviewed-by: jrose
2008-02-25 15:05:44 -08:00