[C2] Optimize instruct clear_array in mips_64.ad

Tue, 28 Mar 2017 14:52:30 -0400

author
fujie
date
Tue, 28 Mar 2017 14:52:30 -0400
changeset 388
854749bf3dde
parent 387
2f19d36583f4
child 389
76857a2c3534

[C2] Optimize instruct clear_array in mips_64.ad

src/cpu/mips/vm/mips_64.ad file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/mips/vm/mips_64.ad	Tue Mar 28 07:43:04 2017 -0400
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Tue Mar 28 14:52:30 2017 -0400
     1.3 @@ -8116,18 +8116,17 @@
     1.4      Register num  = $cnt$$Register;
     1.5      Label Loop, done;
     1.6  
     1.7 -    /* 2012/9/21 Jin: according to X86, $cnt is caculated by doublewords(8 bytes) */
     1.8 +    __ beq(num, R0, done);
     1.9 +    __ delayed()->daddu(AT, base, R0);
    1.10 +
    1.11      __ move(T9, num);	/* T9 = words */
    1.12 -    __ beq(T9, R0, done);
    1.13 -    __ nop();
    1.14 -    __ move(AT, base);
    1.15  
    1.16      __ bind(Loop);
    1.17 -    __ sd(R0, Address(AT, 0));
    1.18 -    __ daddi(AT, AT, wordSize);
    1.19 +    __ sd(R0, AT, 0);
    1.20      __ daddi(T9, T9, -1);
    1.21      __ bne(T9, R0, Loop);
    1.22 -    __ delayed()->nop();
    1.23 +    __ delayed()->daddi(AT, AT, wordSize);
    1.24 +
    1.25      __ bind(done);
    1.26    %}
    1.27    ins_pipe( pipe_slow );

mercurial