1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Aplica o back-end do juninho
- @target : mips
- // Especifica o tipo de metodo empregado para salvar o resultado da compilação
- //@export : MultCoreJun
- @export : simulation
- // Diretorio onde o resultado da compilação será gravado
- @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\bitCount_1`
- // 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" : "bitCount(0)",
- "filename" : "%s_core_0.txt"
- },
- {
- "id" : "core1",
- "initFunction" : "bitCount(18750)",
- "filename" : "%s_core_1.txt"
- },
- {
- "id" : "core2",
- "initFunction" : "bitCount(37500)",
- "filename" : "%s_core_2.txt"
- },
- {
- "id" : "core3",
- "initFunction" : "bitCount(56250)",
- "filename" : "%s_core_3.txt"
- }
- ]`
- package main;
- var (
- result [4][32]int32
- )
- func bitCount(init int32, core int32){
- var (
- n int32
- x int32
- tmp = 0
- zero = 0
- seed = 112500
- //seed = 1000
- )
- for i:= init; i < init + 4500; i++ {
- n = 0
- x = seed
- if x > 0 {
- for true {
- n++
- if x = x & (x-1); x == 0 {
- break
- }
- }
- tmp += n
- }
- seed +=13
- }
- result[core][zero] = tmp
- }
- func main(){
- bitCount(18750,1)
- }
|