# HG changeset patch # User fujie # Date 1470878848 -28800 # Node ID c9917fbd0a31864b851a5ca66f29f3f387cf3b85 # Parent 2dcecbdfda1131611ae8722ef1e17ec47f740db5 Performance of mod operation for long type is 100% up. public class Test { public static void main(String[] args) { long LEN = 65000000; long result = 0; for(long j = 1; j < 20; j++) { result = 0; for(long i = 1; i < LEN; i++){ result += i % (j + 1); } } System.out.println("result = " + result); } } diff -r 2dcecbdfda11 -r c9917fbd0a31 src/cpu/mips/vm/mips_64.ad --- a/src/cpu/mips/vm/mips_64.ad Wed Aug 10 17:54:14 2016 +0800 +++ b/src/cpu/mips/vm/mips_64.ad Thu Aug 11 09:27:28 2016 +0800 @@ -8365,8 +8365,12 @@ Register op1 = as_Register($src1$$reg); Register op2 = as_Register($src2$$reg); - __ ddiv(op1, op2); - __ mfhi(dst); + if (UseLoongsonISA) { + __ gsdmod(dst, op1, op2); + } else { + __ ddiv(op1, op2); + __ mfhi(dst); + } %} ins_pipe( pipe_slow ); %}