• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /openjdk10/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.sparc/src/org/graalvm/compiler/lir/sparc/

Lines Matching defs:masm

103     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
114 masm.add(asRegister(array1Value), arrayBaseOffset, array1);
115 masm.add(asRegister(array2Value), arrayBaseOffset, array2);
118 masm.mulx(asRegister(lengthValue, WORD), arrayIndexScale, length);
119 masm.mov(length, result); // copy
121 emit8ByteCompare(masm, result, array1, array2, length, trueLabel, falseLabel);
122 emitTailCompares(masm, result, array1, array2, trueLabel, falseLabel);
125 masm.bind(trueLabel);
126 masm.mov(1, result);
127 masm.jmp(done);
130 masm.bind(falseLabel);
131 masm.mov(g0, result);
134 masm.bind(done);
145 private void emit8ByteCompare(SPARCMacroAssembler masm, Register result, Register array1, Register array2, Register length, Label trueLabel, Label falseLabel) {
154 masm.sra(length, 0, length);
155 masm.and(result, VECTOR_SIZE - 1, result); // tail count (in bytes)
156 masm.andcc(length, ~(VECTOR_SIZE - 1), length); // vector count (in bytes)
157 BPCC.emit(masm, Xcc, Equal, NOT_ANNUL, PREDICT_NOT_TAKEN, compareTail);
159 masm.sub(length, VECTOR_SIZE, length); // Delay slot
160 masm.add(array1, length, array1);
161 masm.add(array2, length, array2);
162 masm.sub(g0, length, length);
165 masm.ldx(new SPARCAddress(array1, 0), tempReg1);
166 masm.ldx(new SPARCAddress(array2, 0), tempReg2);
167 masm.compareBranch(tempReg1, tempReg2, NotEqual, Xcc, falseLabel, PREDICT_NOT_TAKEN, null);
168 masm.compareBranch(length, 0, Equal, Xcc, compareTailCorrectVectorEnd, PREDICT_NOT_TAKEN, null);
171 masm.ldx(new SPARCAddress(array1, length), tempReg1);
172 masm.bind(loop);
173 masm.ldx(new SPARCAddress(array2, length), tempReg2);
174 masm.cmp(tempReg1, tempReg2);
176 BPCC.emit(masm, Xcc, NotEqual, NOT_ANNUL, PREDICT_NOT_TAKEN, falseLabel);
178 masm.addcc(length, VECTOR_SIZE, length);
180 BPCC.emit(masm, Xcc, NotEqual, ANNUL, PREDICT_TAKEN, loop);
181 masm.ldx(new SPARCAddress(array1, length), tempReg1); // Load in delay slot
184 masm.compareBranch(result, 0, Equal, Xcc, trueLabel, PREDICT_TAKEN, null);
186 masm.bind(compareTailCorrectVectorEnd);
188 masm.add(array1, VECTOR_SIZE, array1);
189 masm.add(array2, VECTOR_SIZE, array2);
191 masm.bind(compareTail);
197 private void emitTailCompares(SPARCMacroAssembler masm, Register result, Register array1, Register array2, Label trueLabel, Label falseLabel) {
206 masm.compareBranch(result, 4, Less, Xcc, compare2Bytes, PREDICT_NOT_TAKEN, null);
208 masm.lduw(new SPARCAddress(array1, 0), tempReg1);
209 masm.lduw(new SPARCAddress(array2, 0), tempReg2);
210 masm.compareBranch(tempReg1, tempReg2, NotEqual, Xcc, falseLabel, PREDICT_NOT_TAKEN, null);
214 masm.add(array1, 4, array1);
215 masm.add(array2, 4, array2);
216 masm.sub(result, 4, result);
219 masm.bind(compare2Bytes);
221 masm.compareBranch(result, 2, Less, Xcc, compare1Byte, PREDICT_TAKEN, null);
223 masm.lduh(new SPARCAddress(array1, 0), tempReg1);
224 masm.lduh(new SPARCAddress(array2, 0), tempReg2);
226 masm.compareBranch(tempReg1, tempReg2, NotEqual, Xcc, falseLabel, PREDICT_TAKEN, null);
231 masm.add(array1, 2, array1);
232 masm.add(array2, 2, array2);
233 masm.sub(result, 2, result);
236 masm.bind(compare1Byte);
237 masm.compareBranch(result, 1, NotEqual, Xcc, trueLabel, PREDICT_TAKEN, null);
239 masm.ldub(new SPARCAddress(array1, 0), tempReg1);
240 masm.ldub(new SPARCAddress(array2, 0), tempReg2);
241 masm.compareBranch(tempReg1, tempReg2, NotEqual, Xcc, falseLabel, PREDICT_TAKEN, null);
243 masm.bind(compare1Byte);
246 masm.bind(compare2Bytes);