{"push_id":1437746322,"size":9,"distinct_size":0,"ref":"refs/heads/intel_ci","head":"cab53b9c449abfad6019ae805d35992b6b854527","before":"a49ab6551c2bb4ce978a9ed8e54dcc344508d56f","commits":[{"sha":"54cb76b142367bc0afbd2a409f810fabdbbff9bf","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"i965: use nir_lower_indirect_derefs() for GLSL\n\nThis moves the nir_lower_indirect_derefs() call into\nbrw_preprocess_nir() so thats is called by both OpenGL and Vulkan\nand removes that call to the old GLSL IR pass\nlower_variable_index_to_cond_assign()\n\nWe want to do this pass in nir to be able to move loop unrolling\nto nir.\n\nThere is a increase of 1-3 instructions in a small number of shaders,\nand 2 Kerbal Space program shaders that increase by 32 instructions.\nThe changes seem to be caused be the difference in the GLSL IR vs\nNIR variable index lowering passes. The GLSL IR pass creates a\nsimple if ladder, while the NIR pass implements a binary search.\n\nShader-db results BDW:\n\ntotal instructions in shared programs: 8705873 -> 8706194 (0.00%)\ninstructions in affected programs: 32515 -> 32836 (0.99%)\nhelped: 3\nHURT: 79\n\ntotal cycles in shared programs: 74618120 -> 74583476 (-0.05%)\ncycles in affected programs: 528104 -> 493460 (-6.56%)\nhelped: 47\nHURT: 37\n\nLOST:   2\nGAINED: 0\n\nV2: remove the do_copy_propagation() call from the i965 GLSL IR\nlinking code. This call was added in f7741c52111 but since we are\nmoving the variable index lowering to NIR we no longer need it and\ncan just rely on the nir copy propagation pass.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/54cb76b142367bc0afbd2a409f810fabdbbff9bf"},{"sha":"d949307a4542e38fa6485abd82300c024cd96613","author":{"name":"Thomas Helland","email":"3671bf2a445c951b33cbc8f4fcecd60da2ff67bf@gmail.com"},"message":"nir: Add a loop analysis pass\n\nThis pass detects induction variables and calculates the\ntrip count of loops to be used for loop unrolling.\n\nI've removed support for float induction values for now, for the\nsimple reason that they don't appear in my shader-db collection,\nand so I don't see it as common enough that we want to pollute the\npass with this in the initial version.\n\nV2: Rebase, adapt to removal of function overloads\n\nV3: (Timothy Arceri)\n - don't try to find trip count if loop terminator conditional is a phi\n - fix trip count for do-while loops\n - replace conditional type != alu assert with return\n - disable unrolling of loops with continues\n - multiple fixes to memory allocation, stop leaking and don't destroy\n   structs we want to use for unrolling.\n - fix iteration count bugs when induction var not on RHS of condition\n - add FIXME for && conditions\n - calculate trip count for unsigned induction/limit vars\n\nV4:\n- count instructions in a loop\n- set the limiting_terminator even if we can't find the trip count for\n all terminators. This is needed for complex unrolling where we handle\n 2 terminators and the trip count is unknown for one of them.\n- restruct structs so we don't keep information not required after\n analysis and remove dead fields.\n- force unrolling in some cases as per the rules in the GLSL IR pass\n\nV5:\n- fix metadata mask value 0x10 vs 0x16\n\nV6:\n- merge loop_variable and nir_loop_variable structs and lists suggested by Jason\n- remove induction var hash table and store pointer to induction information in\n  the loop_variable suggested by Jason.\n- use lowercase list_addtail() suggested by Jason.\n- tidy up init_loop_block() as per Jasons suggestions.\n- replace switch with nir_op_infos[alu->op].num_inputs == 2 in\n  is_var_basic_induction_var() as suggested by Jason.\n- use nir_block_last_instr() in and rename foreach_cf_node_ex_loop() as suggested\n  by Jason.\n- fix else check for is_trivial_loop_terminator() as per Connors suggetions.\n- simplify offset for induction valiables incremented before the exit conditions is\n  checked.\n- replace nir_op_isub check with assert() as it should have been lowered away.\n\nV7:\n- rzalloc() nir_loop struct on creation. Worked previously because ralloc()\nwas broken and always zeroed the struct.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/d949307a4542e38fa6485abd82300c024cd96613"},{"sha":"2b682193d0efe4e681e38b0842df43f2a1d97645","author":{"name":"Thomas Helland","email":"3671bf2a445c951b33cbc8f4fcecd60da2ff67bf@gmail.com"},"message":"nir: Add a LCSAA-pass\n\nV2: Do a \"depth first search\" to convert to LCSSA\n\nV3: Small comment fixup\n\nV4: Rebase, adapt to removal of function overloads\n\nV5: Rebase, adapt to relocation of nir to compiler/nir\n    Still need to adapt to potential if-uses\n    Work around nir_validate issue\n\nV6 (Timothy):\n - tidy lcssa and stop leaking memory\n - dont rewrite the src for the lcssa phi node\n - validate lcssa phi srcs to avoid postvalidate assert\n - don't add new phi if one already exists\n - more lcssa phi validation fixes\n - Rather than marking ssa defs inside a loop just mark blocks inside\n   a loop. This is simpler and fixes lcssa for intrinsics which do\n   not have a destination.\n - don't create LCSSA phis for loops we won't unroll\n - require loop metadata for lcssa pass\n - handle case were the ssa defs use outside the loop is already a phi\n\nV7: (Timothy)\n- pass indirect mask to metadata call\n\nv8: (Timothy)\n- make convert to lcssa a helper function rather than a nir pass\n- replace inside loop bitset with on the fly block index logic.\n- remove lcssa phi validation special cases\n- inline code from useless helpers, suggested by Jason.\n- always do lcssa on loops, suggested by Jason.\n- stop making lcssa phis special. Add as many source as the block\n  has predecessors, suggested by Jason.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/2b682193d0efe4e681e38b0842df43f2a1d97645"},{"sha":"53d98451efc1f4e79868378ba8791fde62d8f3ea","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"nir: don't count removal of lcssa_phi as progress","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/53d98451efc1f4e79868378ba8791fde62d8f3ea"},{"sha":"3eb279ac0cc9ffe736a3fcc934602adf06791680","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"nir: create helper for fixing phi srcs when cloning\n\nThis will be useful for fixing phi srcs when cloning a loop body\nduring loop unrolling.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/3eb279ac0cc9ffe736a3fcc934602adf06791680"},{"sha":"d5157e7474fa8c39851f84a545f911c7d3804cc8","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"nir: add helper for cloning nir_cf_list\n\nV2:\n- updated to create a generic list clone helper nir_cf_list_clone()\n- continue to assert on clone when fallback flag not set as suggested\n  by Jason.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/d5157e7474fa8c39851f84a545f911c7d3804cc8"},{"sha":"1beae5b170b2e2a586fecdbe00ecda0fdaa7139f","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"nir: add a loop unrolling pass\n\nV2:\n- tidy ups suggested by Connor.\n- tidy up cloning logic and handle copy propagation\n based of suggestion by Connor.\n- use nir_ssa_def_rewrite_uses to fix up lcssa phis\n  suggested by Connor.\n- add support for complex loop unrolling (two terminators)\n- handle case were the ssa defs use outside the loop is already a phi\n- support unrolling loops with multiple terminators when trip count\n  is know for each terminator\n\nV3:\n- set correct num_components when creating phi in complex unroll\n- rewrite update remap table based on Jasons suggestions.\n- remove unrequired extract_loop_body() helper as suggested by Jason.\n- simplify the lcssa phi fix up code for simple loops as per Jasons suggestions.\n- use mem context to keep track of hash table memory as suggested by Jason.\n- move is_{complex,simple}_loop helpers to the unroll code\n- require nir_metadata_block_index\n- partially rewrote complex unroll to be simpler and easier to follow.\n\nV4:\n- use rzalloc() when creating nir_phi_src but not setting pred right away\n fixes regression cause by ralloc() no longer zeroing memory.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/1beae5b170b2e2a586fecdbe00ecda0fdaa7139f"},{"sha":"287c2cecb61cb7bd839f0067c6915d5b31fd4f40","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"nir: pass compiler rather than devinfo to functions that call nir_optimize\n\nLater we will pass compiler to nir_optimise to be used by the loop unroll\npass.","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/287c2cecb61cb7bd839f0067c6915d5b31fd4f40"},{"sha":"cab53b9c449abfad6019ae805d35992b6b854527","author":{"name":"Timothy Arceri","email":"2ddafe7dbd3e23500c275f83e0c6a411ad072887@collabora.com"},"message":"i965: use nir loop unrolling pass\n\nV2:\n- enable on all gens","distinct":false,"url":"https://api.github.com/repos/tarceri/Mesa/commits/cab53b9c449abfad6019ae805d35992b6b854527"}]}
{"actor":{"display_login":"tarceri"}}