// Aplica o back-end do juninho
@target          : mips 

// Diretorio onde o resultado da compilação será gravado
@outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\comp`

// Quantidade de palavras de um bloco 32 palavras de 4bytes
@cacheBlockSize: `32`

/**
    Profile de compilacao do back-end
    O formato da string é um json que descreve um array de definições de cada core
    {
        "stackBaseAddress"   : 5888,     -> endereço da base da pilha do core em questão
        "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes
        "id": "core0"                    -> label que define o codigo de cada core
    },

    Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria    
*/

@profile: `[
    {
        "id"               : "core0",
        "initFunction"     : "main()",
        "filename"         : "%s_core_0.txt"
    }
]`



package main;


/*
**  Bit counter by Ratko Tomic
**  Optimized 1 bit/loop counter
**  Esta versão é a input small, com 75000 interações
*/
func bitCount(x int) int {
    n := 0
/*
** The loop will execute once for each bit of x set, this is in average
** twice as fast as the shift/test method.
*/
    if x > 0 {
        for {
            n++
            
            if x = x & (x-1); x == 0 {
                    break
            }
        }
    }
    return n
}

func main(){
    var (
	n     = 0
	seed  = 10033
	//seed2 int = 112500
    )
    
    for i := 0; i < 10; i++ {
    //for i := 0; i < 2; i++ {
        n += bitCount(seed)
	//seed += 1
	seed += 2
    }

    return n
}