{"push_id":3091494879,"size":6,"distinct_size":6,"ref":"refs/heads/master","head":"41f457ff4f2e1571126d778f897efd274d1993ba","before":"bf9aa8b6bf3e64b0d0df4f8292b00bfda9b62f89","commits":[{"sha":"f2ec2633c5f1c10aae0710c7da20273e27018aa8","author":{"name":"Nicolai Haehnle","email":"1d0b47a508f04184301062f109cd46e4b3383bfb@gmail.com"},"message":"AMDGPU/InsertWaitcnts: Untangle some semi-global state\n\nSummary:\nReduce the statefulness of the algorithm in two ways:\n\n1. More clearly split generateWaitcntInstBefore into two phases: the\n   first one which determines the required wait, if any, without changing\n   the ScoreBrackets, and the second one which actually inserts the wait\n   and updates the brackets.\n\n2. Communicate pre-existing s_waitcnt instructions using an argument to\n   generateWaitcntInstBefore instead of through the ScoreBrackets.\n\nTo simplify these changes, a Waitcnt structure is introduced which carries\nthe counts of an s_waitcnt instruction in decoded form.\n\nThere are some functional changes:\n\n1. The FIXME for the VCCZ bug workaround was implemented: we only wait for\n   SMEM instructions as required instead of waiting on all counters.\n\n2. We now properly track pre-existing waitcnt's in all cases, which leads\n   to less conservative waitcnts being emitted in some cases.\n\n     s_load_dword ...\n     s_waitcnt lgkmcnt(0)    <-- pre-existing wait count\n     ds_read_b32 v0, ...\n     ds_read_b32 v1, ...\n     s_waitcnt lgkmcnt(0)    <-- this is too conservative\n     use(v0)\n     more code\n     use(v1)\n\n   This increases code size a bit, but the reduced latency should still be a\n   win in basically all cases. The worst code size regressions in my shader-db\n   are:\n\n WORST REGRESSIONS - Code Size\n Before After     Delta Percentage\n   1724  1736        12    0.70 %   shaders/private/f1-2015/1334.shader_test [0]\n   2276  2284         8    0.35 %   shaders/private/f1-2015/1306.shader_test [0]\n   4632  4640         8    0.17 %   shaders/private/ue4_elemental/62.shader_test [0]\n   2376  2384         8    0.34 %   shaders/private/f1-2015/1308.shader_test [0]\n   3284  3292         8    0.24 %   shaders/private/talos_principle/1955.shader_test [0]\n\nReviewers: msearles, rampitec, scott.linder, kanarayan\n\nSubscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits, hakzsam\n\nDifferential Revision: https://reviews.llvm.org/D54226\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347848 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/f2ec2633c5f1c10aae0710c7da20273e27018aa8"},{"sha":"cd71b9eae53b3798a7fbcc028c521261d6dd7b37","author":{"name":"Nicolai Haehnle","email":"1d0b47a508f04184301062f109cd46e4b3383bfb@gmail.com"},"message":"AMDGPU/InsertWaitcnts: Use foreach loops for inst and wait event types\n\nSummary:\nIt hides the type casting ugliness, and I happened to have to add a new\nsuch loop (in a later patch).\n\nReviewers: msearles, rampitec, scott.linder, kanarayan\n\nSubscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits, hakzsam\n\nDifferential Revision: https://reviews.llvm.org/D54227\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347849 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/cd71b9eae53b3798a7fbcc028c521261d6dd7b37"},{"sha":"219b87abb4d6e0e98c97f787cf9af5f038f546ef","author":{"name":"Nicolai Haehnle","email":"1d0b47a508f04184301062f109cd46e4b3383bfb@gmail.com"},"message":"AMDGPU/InsertWaitcnts: Simplify pending events tracking\n\nSummary:\nInstead of storing the \"score\" (last time point) of the various relevant\nevents, only store whether an event is pending or not.\n\nThis is sufficient, because whenever only one event of a count type is\npending, its last time point is naturally the upper bound of all time\npoints of this count type, and when multiple event types are pending,\nthe count type has gone out of order and an s_waitcnt to 0 is required\nto clear any pending event type (and will then clear all pending event\ntypes for that count type).\n\nThis also removes the special handling of GDS_GPR_LOCK and EXP_GPR_LOCK.\nI do not understand what this special handling ever attempted to achieve.\nIt has existed ever since the original port from an internal code base,\nso my best guess is that it solved a problem related to EXEC handling in\nthat internal code base.\n\nReviewers: msearles, rampitec, scott.linder, kanarayan\n\nSubscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits, hakzsam\n\nDifferential Revision: https://reviews.llvm.org/D54228\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347850 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/219b87abb4d6e0e98c97f787cf9af5f038f546ef"},{"sha":"608f48308a39a5e12d0388fd21972a1e0817366f","author":{"name":"Nicolai Haehnle","email":"1d0b47a508f04184301062f109cd46e4b3383bfb@gmail.com"},"message":"AMDGPU/InsertWaitcnt: Remove unused WaitAtBeginning\n\nReviewers: msearles, rampitec, scott.linder, kanarayan\n\nSubscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits, hakzsam\n\nDifferential Revision: https://reviews.llvm.org/D54229\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347851 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/608f48308a39a5e12d0388fd21972a1e0817366f"},{"sha":"9da2d56db9add5b4cdae869cf0c455bb39637a84","author":{"name":"Nicolai Haehnle","email":"1d0b47a508f04184301062f109cd46e4b3383bfb@gmail.com"},"message":"AMDGPU/InsertWaitcnt: Consistently use uint32_t for scores / time points\n\nSummary:\nThere is one obsolete reference to using -1 as an indication of \"unknown\",\nbut this isn't actually used anywhere.\n\nUsing unsigned makes robust wrapping checks easier.\n\nReviewers: msearles, rampitec, scott.linder, kanarayan\n\nSubscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, llvm-commits, tpr, t-tye, hakzsam\n\nDifferential Revision: https://reviews.llvm.org/D54230\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347852 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/9da2d56db9add5b4cdae869cf0c455bb39637a84"},{"sha":"41f457ff4f2e1571126d778f897efd274d1993ba","author":{"name":"Nicolai Haehnle","email":"1d0b47a508f04184301062f109cd46e4b3383bfb@gmail.com"},"message":"AMDGPU/InsertWaitcnts: Remove the dependence on MachineLoopInfo\n\nSummary:\nMachineLoopInfo cannot be relied on for correctness, because it cannot\nproperly recognize loops in irreducible control flow which can be\nintroduced by late machine basic block optimization passes. See the new\ntest case for the reduced form of an example that occurred in practice.\n\nUse a simple fixpoint iteration instead.\n\nIn order to facilitate this change, refactor WaitcntBrackets so that it\nonly tracks pending events and registers, rather than also maintaining\nstate that is relevant for the high-level algorithm. Various accessor\nmethods can be removed or made private as a consequence.\n\nAffects (in radv):\n- dEQP-VK.glsl.loops.special.{for,while}_uniform_iterations.select_iteration_count_{fragment,vertex}\n\nFixes: r345719 (\"AMDGPU: Rewrite SILowerI1Copies to always stay on SALU\")\n\nReviewers: msearles, rampitec, scott.linder, kanarayan\n\nSubscribers: arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits, hakzsam\n\nDifferential Revision: https://reviews.llvm.org/D54231\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347853 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/41f457ff4f2e1571126d778f897efd274d1993ba"}]}
{"actor":{"display_login":"chapuni"}}