body[0]=inline; inline.add("#FOO"); inline.add("#BAR");
JStatement[] body=new JStatement[]{inline}; inline.add(".set noat"); for(int i=0;i<array.length;i++) { inline.add("lw "+regs[i]+", %"+i); inline.addInput("\"m\"("+getWeight(i)+")"); } if(begin) { inline.add("lw "+regs[regs.length-1]+", %"+array.length); inline.addInput("\"m\"("+getConstant()+")"); } for(int i=0;i<idx.length-1;i++) for(int k=0;k<popCount;k++) for(int j=i;j>=0;j--) { inline.add("mul.s "+tempRegs[0]+",\\t$csti,\\t"+regs[idx[j]+k]); inline.add("add.s "+getInterReg(false,j,k)+",\\t"+getInterReg(true,j,k)+",\\t"+tempRegs[0]); } inline.add(getLabel()+": #LOOP"); final int mult=getMult(array.length); int times=0; int[] oldIdx=new int[4]; int[] oldPop=new int[4]; for(int i=0;i<mult;i++) for(int j=0;j<popCount;j++) for(int k=idx.length-1;k>=0;k--) { int offset=idx[k]+j; inline.add("mul.s "+tempRegs[times]+",\\t$csti,\\t"+regs[offset]); oldIdx[times]=k; oldPop[times]=j; times++; if(times==4) { times=0; for(int l=0;l<4;l++) { int popNum=oldIdx[l]; int elem=oldPop[l]; inline.add("add.s "+getInterReg(false,popNum,elem)+",\\t"+getInterReg(true,popNum,elem)+",\\t"+tempRegs[l]); } } } inline.add("j "+getLabel()); inline.add(".set at");
    public JBlock getSteadyBlock() {	JStatement[] body=new JStatement[1];	InlineAssembly inline=new InlineAssembly();	body[0]=inline;	inline.add("#FOO");	inline.add("#BAR");	return new JBlock(null,body,null);    }