program_jun_bit_count.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Aplica o back-end do juninho
  2. @target : mips
  3. // Diretorio onde o resultado da compilação será gravado
  4. @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\comp`
  5. // Quantidade de palavras de um bloco 32 palavras de 4bytes
  6. @cacheBlockSize: `32`
  7. /**
  8. Profile de compilacao do back-end
  9. O formato da string é um json que descreve um array de definições de cada core
  10. {
  11. "stackBaseAddress" : 5888, -> endereço da base da pilha do core em questão
  12. "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes
  13. "id": "core0" -> label que define o codigo de cada core
  14. },
  15. Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria
  16. */
  17. @profile: `[
  18. {
  19. "id" : "core0",
  20. "initFunction" : "main()",
  21. "filename" : "%s_core_0.txt"
  22. }
  23. ]`
  24. package main;
  25. /*
  26. ** Bit counter by Ratko Tomic
  27. ** Optimized 1 bit/loop counter
  28. ** Esta versão é a input small, com 75000 interações
  29. */
  30. func bitCount(x int) int {
  31. n := 0
  32. /*
  33. ** The loop will execute once for each bit of x set, this is in average
  34. ** twice as fast as the shift/test method.
  35. */
  36. if x > 0 {
  37. for {
  38. n++
  39. if x = x & (x-1); x == 0 {
  40. break
  41. }
  42. }
  43. }
  44. return n
  45. }
  46. func main(){
  47. var (
  48. n = 0
  49. seed = 10033
  50. //seed2 int = 112500
  51. )
  52. for i := 0; i < 10; i++ {
  53. //for i := 0; i < 2; i++ {
  54. n += bitCount(seed)
  55. //seed += 1
  56. seed += 2
  57. }
  58. return n
  59. }