)]}'
{
  "commit": "eeca3ba92fdb07e44abf3e2bebfcede03e1eae12",
  "tree": "35e9125f4d53626f7d0a01458792e338df52fc0f",
  "parents": [
    "0960c7c7eb30b3d651037c799aaa0d80722f063f"
  ],
  "author": {
    "name": "Lynn Boger",
    "email": "laboger@linux.vnet.ibm.com",
    "time": "Thu Apr 28 07:16:08 2016 -0500"
  },
  "committer": {
    "name": "Michael Munday",
    "email": "munday@ca.ibm.com",
    "time": "Thu May 05 18:52:28 2016 +0000"
  },
  "message": "sync/atomic, runtime/internal/atomic: improve ppc64x atomics\n\nThe following performance improvements have been made to the\nlow-level atomic functions for ppc64le \u0026 ppc64:\n\n- For those cases containing a lwarx and stwcx (or other sizes):\nsync, lwarx, maybe something, stwcx, loop to sync, sync, isync\nThe sync is moved before (outside) the lwarx/stwcx loop, and the\n sync after is removed, so it becomes:\nsync, lwarx, maybe something, stwcx, loop to lwarx, isync\n\n- For the Or8 and And8, the shifting and manipulation of the\naddress to the word aligned version were removed and the\ninstructions were changed to use lbarx, stbcx instead of\nregister shifting, xor, then lwarx, stwcx.\n\n- New instructions LWSYNC, LBAR, STBCC were tested and added.\nruntime/atomic_ppc64x.s was changed to use the LWSYNC opcode\ninstead of the WORD encoding.\n\nFixes #15469\n\nRan some of the benchmarks in the runtime and sync directories.\nSome results varied from run to run but the trend was improvement\nbased on best times for base and new:\n\nruntime.test:\nBenchmarkChanNonblocking-128         0.88          0.89          +1.14%\nBenchmarkChanUncontended-128         569           511           -10.19%\nBenchmarkChanContended-128           63110         53231         -15.65%\nBenchmarkChanSync-128                691           598           -13.46%\nBenchmarkChanSyncWork-128            11355         11649         +2.59%\nBenchmarkChanProdCons0-128           2402          2090          -12.99%\nBenchmarkChanProdCons10-128          1348          1363          +1.11%\nBenchmarkChanProdCons100-128         1002          746           -25.55%\nBenchmarkChanProdConsWork0-128       2554          2720          +6.50%\nBenchmarkChanProdConsWork10-128      1909          1804          -5.50%\nBenchmarkChanProdConsWork100-128     1624          1580          -2.71%\nBenchmarkChanCreation-128            237           212           -10.55%\nBenchmarkChanSem-128                 705           667           -5.39%\nBenchmarkChanPopular-128             5081190       4497566       -11.49%\n\nBenchmarkCreateGoroutines-128             532           473           -11.09%\nBenchmarkCreateGoroutinesParallel-128     35.0          34.7          -0.86%\nBenchmarkCreateGoroutinesCapture-128      4923          4200          -14.69%\n\nsync.test:\nBenchmarkUncontendedSemaphore-128      112           94.2          -15.89%\nBenchmarkContendedSemaphore-128        133           128           -3.76%\nBenchmarkMutexUncontended-128          1.90          1.67          -12.11%\nBenchmarkMutex-128                     353           310           -12.18%\nBenchmarkMutexSlack-128                304           283           -6.91%\nBenchmarkMutexWork-128                 554           541           -2.35%\nBenchmarkMutexWorkSlack-128            567           556           -1.94%\nBenchmarkMutexNoSpin-128               275           242           -12.00%\nBenchmarkMutexSpin-128                 1129          1030          -8.77%\nBenchmarkOnce-128                      1.08          0.96          -11.11%\nBenchmarkPool-128                      29.8          27.4          -8.05%\nBenchmarkPoolOverflow-128              40564         36583         -9.81%\nBenchmarkSemaUncontended-128           3.14          2.63          -16.24%\nBenchmarkSemaSyntNonblock-128          1087          1069          -1.66%\nBenchmarkSemaSyntBlock-128             897           893           -0.45%\nBenchmarkSemaWorkNonblock-128          1034          1028          -0.58%\nBenchmarkSemaWorkBlock-128             949           886           -6.64%\n\nChange-Id: I4403fb29d3cd5254b7b1ce87a216bd11b391079e\nReviewed-on: https://go-review.googlesource.com/22549\nReviewed-by: Michael Munday \u003cmunday@ca.ibm.com\u003e\nReviewed-by: Minux Ma \u003cminux@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8cc984260e17639d0dda7f2947852c47efafee30",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/obj/ppc64/a.out.go",
      "new_id": "8e58c592383327b13641bd267f5fa58fbdcace3c",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/obj/ppc64/a.out.go"
    },
    {
      "type": "modify",
      "old_id": "868700f0124aed36dd4c18669c4f9f368d03acf0",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/obj/ppc64/anames.go",
      "new_id": "eb42c9a953e4324a9cb1db5ee63e9bf4b4feacc3",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/obj/ppc64/anames.go"
    },
    {
      "type": "modify",
      "old_id": "e847ec341f513d990d1d88f48bfe8c97ceaa808e",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/obj/ppc64/asm9.go",
      "new_id": "5366809d2fc6e5df5a42f6d76736d0292133b04b",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/obj/ppc64/asm9.go"
    },
    {
      "type": "modify",
      "old_id": "43e4825af01cdf8472613812f288dd00009800b9",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/obj/ppc64/obj9.go",
      "new_id": "5f88307a2f1a107b31a1e54e214c488d3ae87fd0",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/obj/ppc64/obj9.go"
    },
    {
      "type": "modify",
      "old_id": "7cdb7466eb12ab974c639e26bf307583f3992f7d",
      "old_mode": 33188,
      "old_path": "src/runtime/atomic_ppc64x.s",
      "new_id": "57f672f330144963aec60fc89ff06704621883d4",
      "new_mode": 33188,
      "new_path": "src/runtime/atomic_ppc64x.s"
    },
    {
      "type": "modify",
      "old_id": "4a776787a29aefe427c5bdd1eaf4277d2a29c5ab",
      "old_mode": 33188,
      "old_path": "src/runtime/internal/atomic/asm_ppc64x.s",
      "new_id": "a928e400d2cf70413b4bfcf626171f2ad7703125",
      "new_mode": 33188,
      "new_path": "src/runtime/internal/atomic/asm_ppc64x.s"
    },
    {
      "type": "modify",
      "old_id": "ed348458b49ceb08744d5ef136864a8bb9f77a61",
      "old_mode": 33188,
      "old_path": "src/sync/atomic/asm_ppc64x.s",
      "new_id": "2474e96435bedbb82bc305b7db938927db761370",
      "new_mode": 33188,
      "new_path": "src/sync/atomic/asm_ppc64x.s"
    }
  ]
}
