1. 13 Jun, 2016 2 commits
  2. 08 Jun, 2016 2 commits
    • Cherry Zhang's avatar
      [dev.ssa] cmd/compile: fix a few bugs for SSA for ARM · fa54bf16
      Cherry Zhang authored
      - 64x signed right shift was wrong for shift larger than 0x80000000.
      - for Lsh-followed-by-Rsh, the intermediate value should be full int
        width, so when it is spilled MOVW should be used.
      - use RET for RetJmp, so the assembler can take case of restoring LR
        for non-leaf case.
      - reserve R9 in dynlink mode. R9 is used for GOT by the assembler.
      
      Progress on SSA backend for ARM. Still not complete.
      
      Updates #15365.
      
      Change-Id: I3caca256b92ff7cf96469da2feaf4868a592efc5
      Reviewed-on: https://go-review.googlesource.com/23793Reviewed-by: default avatarDavid Chase <drchase@google.com>
      fa54bf16
    • Cherry Zhang's avatar
      [dev.ssa] cmd/compile: fix scheduling of tuple ops · 225ef76c
      Cherry Zhang authored
      We want tuple-reading ops immediately follow tuple-generating op, so
      that tuple values will not be spilled/copied.
      
      The mechanism introduced in the previous CL cannot really avoid tuples
      interleaving. In this CL we always emit tuple and their selectors together.
      Maybe remove the tuple scores if it does not help on performance (todo).
      
      Also let tighten not move tuple-reading ops across blocks.
      
      In the previous CL a special case of regenerating flags with tuple-reading
      pseudo-op is added, but it did not cover end-of-block case. This is fixed
      in this CL and the condition is generalized.
      
      Progress on SSA backend for ARM. Still not complete.
      
      Updates #15365.
      
      Change-Id: I8980b34e7a64eb98153540e9e19a3782e20406ff
      Reviewed-on: https://go-review.googlesource.com/23792Reviewed-by: default avatarDavid Chase <drchase@google.com>
      225ef76c
  3. 06 Jun, 2016 1 commit
    • Cherry Zhang's avatar
      [dev.ssa] cmd/compile: handle floating point on ARM · 59e11d78
      Cherry Zhang authored
      Machine supports (or the runtime simulates in soft float mode)
      (u)int32<->float conversions. The frontend rewrites int64<->float
      conversions to call to runtime function.
      
      For int64->float32 conversion, the frontend generates
      
      .   .   AS u(100) l(10) tc(1)
      .   .   .   NAME-main.~r1 u(1) a(true) g(1) l(9) x(8+0) class(PPARAMOUT) f(1) float32
      .   .   .   CALLFUNC u(100) l(10) tc(1) float32
      .   .   .   .   NAME-runtime.int64tofloat64 u(1) a(true) x(0+0) class(PFUNC) tc(1) used(true) FUNC-func(int64) float64
      
      The CALLFUNC node has type float32, whereas runtime.int64tofloat64
      returns float64. The legacy backend implicitly makes a float64->float32
      conversion. The SSA backend does not do implicit conversion, so we
      insert an explicit CONV here.
      
      All cmd/compile/internal/gc/testdata/*_ssa.go tests passed.
      
      Progress on SSA for ARM. Still not complete.
      
      Update #15365.
      
      Change-Id: I30937c8ff977271246b068f48224693776804339
      Reviewed-on: https://go-review.googlesource.com/23652Reviewed-by: default avatarKeith Randall <khr@golang.org>
      59e11d78
  4. 05 Jun, 2016 1 commit
  5. 02 Jun, 2016 3 commits
  6. 27 May, 2016 22 commits
  7. 26 May, 2016 9 commits