private boolean compileSWsequenceZR(int baseRegister,int[] offsets,int[] registers){
  for (int i=0; i < registers.length; i++) {
    if (registers[i] != _zr) {
      return false;
    }
  }
  for (int i=1; i < offsets.length; i++) {
    if (offsets[i] != offsets[i - 1] + 4) {
      return false;
    }
  }
  int offset=offsets[0];
  int length=offsets.length;
  do {
    int copyLength=Math.min(length,FastMemory.zero.length);
    mv.visitFieldInsn(Opcodes.GETSTATIC,Type.getInternalName(FastMemory.class),"zero","[I");
    loadImm(0);
    loadMemoryInt();
    prepareMemIndex(baseRegister,offset,false,32);
    loadImm(copyLength);
    mv.visitMethodInsn(Opcodes.INVOKESTATIC,Type.getInternalName(System.class),"arraycopy",arraycopyDescriptor);
    length-=copyLength;
    offset+=copyLength;
  }
 while (length > 0);
  return true;
}

private boolean compileSWsequenceZR ( int baseRegister , int [ ] offsets , int [ ] registers ) { for ( int i = 0 ; i < registers . length ; i ++ ) { if ( registers [ i ] != _zr ) { return false ; } } for ( int i = 1 ; i < offsets . length ; i ++ ) { if ( offsets [ i ] != offsets [ i - 1 ] + 4 ) { return false ; } } int offset = offsets [ 0 ] ; int length = offsets . length ; do { int copyLength = Math . min ( length , FastMemory . zero . length ) ; mv . visitFieldInsn ( Opcodes . GETSTATIC , Type . getInternalName ( FastMemory . class ) , "zero" , "[I" ) ; loadImm ( 0 ) ; loadMemoryInt ( ) ; prepareMemIndex ( baseRegister , offset , false , 32 ) ; loadImm ( copyLength ) ; mv . visitMethodInsn ( Opcodes . INVOKESTATIC , Type . getInternalName ( System . class ) , "arraycopy" , arraycopyDescriptor ) ; length -= copyLength ; offset += copyLength ; } while ( length > 0 ) ; return true ; }
compile a sequence sw $ zr , n ( $ reg ) sw $ zr , n + 4 ( $ reg ) sw $ zr , n + 8 ( $ reg ) . . . into system . arraycopy ( fastmemory . zero , 0 , memoryint , ( n + $ reg ) > > 2 , length )
