program_jun_bit_count_1.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Aplica o back-end do juninho
  2. @target : mips
  3. // Especifica o tipo de metodo empregado para salvar o resultado da compilação
  4. //@export : MultCoreJun
  5. @export : simulation
  6. // Diretorio onde o resultado da compilação será gravado
  7. @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\bitCount_1`
  8. // Quantidade de palavras de um bloco 32 palavras de 4bytes
  9. @cacheBlockSize: `32`
  10. /**
  11. Profile de compilacao do back-end
  12. O formato da string é um json que descreve um array de definições de cada core
  13. {
  14. "stackBaseAddress" : 5888, -> endereço da base da pilha do core em questão
  15. "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes
  16. "id": "core0" -> label que define o codigo de cada core
  17. },
  18. Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria
  19. */
  20. @profile: `[
  21. {
  22. "id" : "core0",
  23. "initFunction" : "bitCount(0)",
  24. "filename" : "%s_core_0.txt"
  25. },
  26. {
  27. "id" : "core1",
  28. "initFunction" : "bitCount(18750)",
  29. "filename" : "%s_core_1.txt"
  30. },
  31. {
  32. "id" : "core2",
  33. "initFunction" : "bitCount(37500)",
  34. "filename" : "%s_core_2.txt"
  35. },
  36. {
  37. "id" : "core3",
  38. "initFunction" : "bitCount(56250)",
  39. "filename" : "%s_core_3.txt"
  40. }
  41. ]`
  42. package main;
  43. var (
  44. result [4][32]int32
  45. )
  46. func bitCount(init int32, core int32){
  47. var (
  48. n int32
  49. x int32
  50. tmp = 0
  51. zero = 0
  52. seed = 112500
  53. //seed = 1000
  54. )
  55. for i:= init; i < init + 4500; i++ {
  56. n = 0
  57. x = seed
  58. if x > 0 {
  59. for true {
  60. n++
  61. if x = x & (x-1); x == 0 {
  62. break
  63. }
  64. }
  65. tmp += n
  66. }
  67. seed +=13
  68. }
  69. result[core][zero] = tmp
  70. }
  71. func main(){
  72. bitCount(18750,1)
  73. }