{"action":"created","comment":{"url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/comments/170363349","pull_request_review_id":99046964,"id":170363349,"diff_hunk":"@@ -27,6 +27,782 @@ const uint32_t kExtInstInstructionInIdx = 1;\n const uint32_t kFMixXIdInIdx = 2;\n const uint32_t kFMixYIdInIdx = 3;\n \n+// Returns the element width of |type|.\n+uint32_t ElementWidth(const analysis::Type* type) {\n+  if (const analysis::Vector* vec_type = type->AsVector()) {\n+    return ElementWidth(vec_type->element_type());\n+  } else if (const analysis::Float* float_type = type->AsFloat()) {\n+    return float_type->width();\n+  } else {\n+    assert(type->AsInteger());\n+    return type->AsInteger()->width();\n+  }\n+}\n+\n+// Returns true if |type| is Float or a vector of Float.\n+bool HasFloatingPoint(const analysis::Type* type) {\n+  if (type->AsFloat()) {\n+    return true;\n+  } else if (const analysis::Vector* vec_type = type->AsVector()) {\n+    return vec_type->element_type()->AsFloat() != nullptr;\n+  }\n+\n+  return false;\n+}\n+\n+// Returns false if |val| is NaN, infinite or subnormal.\n+template <typename T>\n+bool IsValidResult(T val) {\n+  int classified = std::fpclassify(val);\n+  switch (classified) {\n+    case FP_NAN:\n+    case FP_INFINITE:\n+    case FP_SUBNORMAL:\n+      return false;\n+    default:\n+      return true;\n+  }\n+}\n+\n+// Returns the negation of |c|. |c| must be a 32 or 64 bit floating point\n+// constant.\n+uint32_t NegateFloatingPointConstant(analysis::ConstantManager* const_mgr,\n+                                     const analysis::Constant* c) {\n+  assert(c);\n+  assert(c->type()->AsFloat());\n+  uint32_t width = c->type()->AsFloat()->width();\n+  assert(width == 32 || width == 64);\n+  std::vector<uint32_t> words;\n+  if (width == 64) {\n+    spvutils::FloatProxy<double> result(c->GetDouble() * -1.0);\n+    words = result.GetWords();\n+  } else {\n+    spvutils::FloatProxy<float> result(c->GetFloat() * -1.0f);\n+    words = result.GetWords();\n+  }\n+\n+  const analysis::Constant* negated_const =\n+      const_mgr->GetConstant(c->type(), std::move(words));\n+  return const_mgr->GetDefiningInstruction(negated_const)->result_id();\n+}\n+\n+std::vector<uint32_t> ExtractInts(uint64_t val) {\n+  std::vector<uint32_t> words;\n+  words.push_back(static_cast<uint32_t>(val));\n+  words.push_back(static_cast<uint32_t>(val >> 32));\n+  return words;\n+}\n+\n+// Negates the integer constant |c|. Returns the id of the defining instruction.\n+uint32_t NegateIntegerConstant(analysis::ConstantManager* const_mgr,","path":"source/opt/folding_rules.cpp","position":71,"original_position":71,"commit_id":"1b1a9d9a05096749ff10b261a76cf126fe3359cc","original_commit_id":"1b1a9d9a05096749ff10b261a76cf126fe3359cc","user":{"login":"alan-baker","id":33432579,"avatar_url":"https://avatars1.githubusercontent.com/u/33432579?v=4","gravatar_id":"","url":"https://api.github.com/users/alan-baker","html_url":"https://github.com/alan-baker","followers_url":"https://api.github.com/users/alan-baker/followers","following_url":"https://api.github.com/users/alan-baker/following{/other_user}","gists_url":"https://api.github.com/users/alan-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/alan-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alan-baker/subscriptions","organizations_url":"https://api.github.com/users/alan-baker/orgs","repos_url":"https://api.github.com/users/alan-baker/repos","events_url":"https://api.github.com/users/alan-baker/events{/privacy}","received_events_url":"https://api.github.com/users/alan-baker/received_events","type":"User","site_admin":false},"body":"To facilitate both building vector constants and setting the new operands.","created_at":"2018-02-23T20:46:13Z","updated_at":"2018-02-23T20:46:13Z","html_url":"https://github.com/KhronosGroup/SPIRV-Tools/pull/1346#discussion_r170363349","pull_request_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/comments/170363349"},"html":{"href":"https://github.com/KhronosGroup/SPIRV-Tools/pull/1346#discussion_r170363349"},"pull_request":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346"}},"in_reply_to_id":170353813},"pull_request":{"url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346","id":171092163,"html_url":"https://github.com/KhronosGroup/SPIRV-Tools/pull/1346","diff_url":"https://github.com/KhronosGroup/SPIRV-Tools/pull/1346.diff","patch_url":"https://github.com/KhronosGroup/SPIRV-Tools/pull/1346.patch","issue_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues/1346","number":1346,"state":"open","locked":false,"title":"WIP: Merge arithmetic instructions with constant operands","user":{"login":"alan-baker","id":33432579,"avatar_url":"https://avatars1.githubusercontent.com/u/33432579?v=4","gravatar_id":"","url":"https://api.github.com/users/alan-baker","html_url":"https://github.com/alan-baker","followers_url":"https://api.github.com/users/alan-baker/followers","following_url":"https://api.github.com/users/alan-baker/following{/other_user}","gists_url":"https://api.github.com/users/alan-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/alan-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alan-baker/subscriptions","organizations_url":"https://api.github.com/users/alan-baker/orgs","repos_url":"https://api.github.com/users/alan-baker/repos","events_url":"https://api.github.com/users/alan-baker/events{/privacy}","received_events_url":"https://api.github.com/users/alan-baker/received_events","type":"User","site_admin":false},"body":"Adds Folding rules for merging arithmetic instructions where some operands are constant. Current rules:\r\n * negate of (negate, multiply, divide, add or subtract)\r\n * multiply of (multiply or divide)\r\n * divide of (multiply or divide)\r\n * reciprocal of divide\r\n\r\nMissing rules:\r\n * multiply of negate\r\n * divide of negate\r\n * add of (add, subtract or negate)\r\n * subtract of (add, subtract or negate)\r\n\r\nAll rules handle integer, floating point or vectors of those types.\r\n\r\nChanged IntMultiplyBy1 to handle 64 bit integers.\r\n\r\nPosting before before everything is added because the code changes have gotten significantly larger than intended.","created_at":"2018-02-23T19:07:05Z","updated_at":"2018-02-23T20:46:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"822defca07996085443ff716a76c489fe6d10140","assignee":{"login":"alan-baker","id":33432579,"avatar_url":"https://avatars1.githubusercontent.com/u/33432579?v=4","gravatar_id":"","url":"https://api.github.com/users/alan-baker","html_url":"https://github.com/alan-baker","followers_url":"https://api.github.com/users/alan-baker/followers","following_url":"https://api.github.com/users/alan-baker/following{/other_user}","gists_url":"https://api.github.com/users/alan-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/alan-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alan-baker/subscriptions","organizations_url":"https://api.github.com/users/alan-baker/orgs","repos_url":"https://api.github.com/users/alan-baker/repos","events_url":"https://api.github.com/users/alan-baker/events{/privacy}","received_events_url":"https://api.github.com/users/alan-baker/received_events","type":"User","site_admin":false},"assignees":[{"login":"alan-baker","id":33432579,"avatar_url":"https://avatars1.githubusercontent.com/u/33432579?v=4","gravatar_id":"","url":"https://api.github.com/users/alan-baker","html_url":"https://github.com/alan-baker","followers_url":"https://api.github.com/users/alan-baker/followers","following_url":"https://api.github.com/users/alan-baker/following{/other_user}","gists_url":"https://api.github.com/users/alan-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/alan-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alan-baker/subscriptions","organizations_url":"https://api.github.com/users/alan-baker/orgs","repos_url":"https://api.github.com/users/alan-baker/repos","events_url":"https://api.github.com/users/alan-baker/events{/privacy}","received_events_url":"https://api.github.com/users/alan-baker/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"dnovillo","id":7295335,"avatar_url":"https://avatars1.githubusercontent.com/u/7295335?v=4","gravatar_id":"","url":"https://api.github.com/users/dnovillo","html_url":"https://github.com/dnovillo","followers_url":"https://api.github.com/users/dnovillo/followers","following_url":"https://api.github.com/users/dnovillo/following{/other_user}","gists_url":"https://api.github.com/users/dnovillo/gists{/gist_id}","starred_url":"https://api.github.com/users/dnovillo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dnovillo/subscriptions","organizations_url":"https://api.github.com/users/dnovillo/orgs","repos_url":"https://api.github.com/users/dnovillo/repos","events_url":"https://api.github.com/users/dnovillo/events{/privacy}","received_events_url":"https://api.github.com/users/dnovillo/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346/commits","review_comments_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346/comments","review_comment_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues/1346/comments","statuses_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/statuses/1b1a9d9a05096749ff10b261a76cf126fe3359cc","head":{"label":"alan-baker:merge-arithmetic","ref":"merge-arithmetic","sha":"1b1a9d9a05096749ff10b261a76cf126fe3359cc","user":{"login":"alan-baker","id":33432579,"avatar_url":"https://avatars1.githubusercontent.com/u/33432579?v=4","gravatar_id":"","url":"https://api.github.com/users/alan-baker","html_url":"https://github.com/alan-baker","followers_url":"https://api.github.com/users/alan-baker/followers","following_url":"https://api.github.com/users/alan-baker/following{/other_user}","gists_url":"https://api.github.com/users/alan-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/alan-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alan-baker/subscriptions","organizations_url":"https://api.github.com/users/alan-baker/orgs","repos_url":"https://api.github.com/users/alan-baker/repos","events_url":"https://api.github.com/users/alan-baker/events{/privacy}","received_events_url":"https://api.github.com/users/alan-baker/received_events","type":"User","site_admin":false},"repo":{"id":109752737,"name":"SPIRV-Tools","full_name":"alan-baker/SPIRV-Tools","owner":{"login":"alan-baker","id":33432579,"avatar_url":"https://avatars1.githubusercontent.com/u/33432579?v=4","gravatar_id":"","url":"https://api.github.com/users/alan-baker","html_url":"https://github.com/alan-baker","followers_url":"https://api.github.com/users/alan-baker/followers","following_url":"https://api.github.com/users/alan-baker/following{/other_user}","gists_url":"https://api.github.com/users/alan-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/alan-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alan-baker/subscriptions","organizations_url":"https://api.github.com/users/alan-baker/orgs","repos_url":"https://api.github.com/users/alan-baker/repos","events_url":"https://api.github.com/users/alan-baker/events{/privacy}","received_events_url":"https://api.github.com/users/alan-baker/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alan-baker/SPIRV-Tools","description":null,"fork":true,"url":"https://api.github.com/repos/alan-baker/SPIRV-Tools","forks_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/forks","keys_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/teams","hooks_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/hooks","issue_events_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/issues/events{/number}","events_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/events","assignees_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/assignees{/user}","branches_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/branches{/branch}","tags_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/tags","blobs_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/statuses/{sha}","languages_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/languages","stargazers_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/stargazers","contributors_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/contributors","subscribers_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/subscribers","subscription_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/subscription","commits_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/contents/{+path}","compare_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/merges","archive_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/downloads","issues_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/issues{/number}","pulls_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/pulls{/number}","milestones_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/milestones{/number}","notifications_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/labels{/name}","releases_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/releases{/id}","deployments_url":"https://api.github.com/repos/alan-baker/SPIRV-Tools/deployments","created_at":"2017-11-06T21:36:25Z","updated_at":"2017-11-06T21:36:29Z","pushed_at":"2018-02-23T18:47:55Z","git_url":"git://github.com/alan-baker/SPIRV-Tools.git","ssh_url":"git@github.com:alan-baker/SPIRV-Tools.git","clone_url":"https://github.com/alan-baker/SPIRV-Tools.git","svn_url":"https://github.com/alan-baker/SPIRV-Tools","homepage":null,"size":6740,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"KhronosGroup:master","ref":"master","sha":"94af58a350b46f85422699e27ccbf22bf453149f","user":{"login":"KhronosGroup","id":1608701,"avatar_url":"https://avatars3.githubusercontent.com/u/1608701?v=4","gravatar_id":"","url":"https://api.github.com/users/KhronosGroup","html_url":"https://github.com/KhronosGroup","followers_url":"https://api.github.com/users/KhronosGroup/followers","following_url":"https://api.github.com/users/KhronosGroup/following{/other_user}","gists_url":"https://api.github.com/users/KhronosGroup/gists{/gist_id}","starred_url":"https://api.github.com/users/KhronosGroup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KhronosGroup/subscriptions","organizations_url":"https://api.github.com/users/KhronosGroup/orgs","repos_url":"https://api.github.com/users/KhronosGroup/repos","events_url":"https://api.github.com/users/KhronosGroup/events{/privacy}","received_events_url":"https://api.github.com/users/KhronosGroup/received_events","type":"Organization","site_admin":false},"repo":{"id":45981801,"name":"SPIRV-Tools","full_name":"KhronosGroup/SPIRV-Tools","owner":{"login":"KhronosGroup","id":1608701,"avatar_url":"https://avatars3.githubusercontent.com/u/1608701?v=4","gravatar_id":"","url":"https://api.github.com/users/KhronosGroup","html_url":"https://github.com/KhronosGroup","followers_url":"https://api.github.com/users/KhronosGroup/followers","following_url":"https://api.github.com/users/KhronosGroup/following{/other_user}","gists_url":"https://api.github.com/users/KhronosGroup/gists{/gist_id}","starred_url":"https://api.github.com/users/KhronosGroup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KhronosGroup/subscriptions","organizations_url":"https://api.github.com/users/KhronosGroup/orgs","repos_url":"https://api.github.com/users/KhronosGroup/repos","events_url":"https://api.github.com/users/KhronosGroup/events{/privacy}","received_events_url":"https://api.github.com/users/KhronosGroup/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KhronosGroup/SPIRV-Tools","description":null,"fork":false,"url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools","forks_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/forks","keys_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/teams","hooks_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/hooks","issue_events_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues/events{/number}","events_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/events","assignees_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/assignees{/user}","branches_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/branches{/branch}","tags_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/tags","blobs_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/statuses/{sha}","languages_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/languages","stargazers_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/stargazers","contributors_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/contributors","subscribers_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/subscribers","subscription_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/subscription","commits_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/contents/{+path}","compare_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/merges","archive_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/downloads","issues_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues{/number}","pulls_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls{/number}","milestones_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/milestones{/number}","notifications_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/labels{/name}","releases_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/releases{/id}","deployments_url":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/deployments","created_at":"2015-11-11T12:56:25Z","updated_at":"2018-02-14T20:11:34Z","pushed_at":"2018-02-23T19:23:40Z","git_url":"git://github.com/KhronosGroup/SPIRV-Tools.git","ssh_url":"git@github.com:KhronosGroup/SPIRV-Tools.git","clone_url":"https://github.com/KhronosGroup/SPIRV-Tools.git","svn_url":"https://github.com/KhronosGroup/SPIRV-Tools","homepage":null,"size":6654,"stargazers_count":253,"watchers_count":253,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":103,"mirror_url":null,"archived":false,"open_issues_count":177,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":103,"open_issues":177,"watchers":253,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346"},"html":{"href":"https://github.com/KhronosGroup/SPIRV-Tools/pull/1346"},"issue":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues/1346"},"comments":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/issues/1346/comments"},"review_comments":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346/comments"},"review_comment":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/pulls/1346/commits"},"statuses":{"href":"https://api.github.com/repos/KhronosGroup/SPIRV-Tools/statuses/1b1a9d9a05096749ff10b261a76cf126fe3359cc"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"alan-baker"}}