comparison src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp @ 17877:17b2fbdb6637

8038297: Avoid placing CTI immediately following cbcond instruction on T4 Summary: Insert a nop between cbcond and CTI Reviewed-by: kvn, twisti
author iveresov
date Thu, 10 Apr 2014 23:15:13 -0700
parents 87a6f2df28e2
children 1ca36602c05b 4b2830dcf178
comparison
equal deleted inserted replaced
17875:cb1b723cbca8 17877:17b2fbdb6637
231 inline void MacroAssembler::br( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) { 231 inline void MacroAssembler::br( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) {
232 Assembler::bp(c, a, icc, p, d, rt); 232 Assembler::bp(c, a, icc, p, d, rt);
233 } 233 }
234 234
235 inline void MacroAssembler::br( Condition c, bool a, Predict p, Label& L ) { 235 inline void MacroAssembler::br( Condition c, bool a, Predict p, Label& L ) {
236 insert_nop_after_cbcond();
236 br(c, a, p, target(L)); 237 br(c, a, p, target(L));
237 } 238 }
238 239
239 240
240 // Branch that tests either xcc or icc depending on the 241 // Branch that tests either xcc or icc depending on the
246 MacroAssembler::br(c, a, p, d, rt); 247 MacroAssembler::br(c, a, p, d, rt);
247 #endif 248 #endif
248 } 249 }
249 250
250 inline void MacroAssembler::brx( Condition c, bool a, Predict p, Label& L ) { 251 inline void MacroAssembler::brx( Condition c, bool a, Predict p, Label& L ) {
252 insert_nop_after_cbcond();
251 brx(c, a, p, target(L)); 253 brx(c, a, p, target(L));
252 } 254 }
253 255
254 inline void MacroAssembler::ba( Label& L ) { 256 inline void MacroAssembler::ba( Label& L ) {
255 br(always, false, pt, L); 257 br(always, false, pt, L);
267 inline void MacroAssembler::fb( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) { 269 inline void MacroAssembler::fb( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) {
268 fbp(c, a, fcc0, p, d, rt); 270 fbp(c, a, fcc0, p, d, rt);
269 } 271 }
270 272
271 inline void MacroAssembler::fb( Condition c, bool a, Predict p, Label& L ) { 273 inline void MacroAssembler::fb( Condition c, bool a, Predict p, Label& L ) {
274 insert_nop_after_cbcond();
272 fb(c, a, p, target(L)); 275 fb(c, a, p, target(L));
273 } 276 }
274 277
275 inline void MacroAssembler::fbp( Condition c, bool a, CC cc, Predict p, address d, relocInfo::relocType rt ) { 278 inline void MacroAssembler::fbp( Condition c, bool a, CC cc, Predict p, address d, relocInfo::relocType rt ) {
276 Assembler::fbp(c, a, cc, p, d, rt); 279 Assembler::fbp(c, a, cc, p, d, rt);
316 Assembler::call( d, rt ); 319 Assembler::call( d, rt );
317 #endif 320 #endif
318 } 321 }
319 322
320 inline void MacroAssembler::call( Label& L, relocInfo::relocType rt ) { 323 inline void MacroAssembler::call( Label& L, relocInfo::relocType rt ) {
324 insert_nop_after_cbcond();
321 MacroAssembler::call( target(L), rt); 325 MacroAssembler::call( target(L), rt);
322 } 326 }
323 327
324 328
325 329