- User Since
- Jan 28 2016, 8:30 AM (185 w, 1 d)
Thu, Aug 1
LGTM, with tips :)
Mon, Jul 22
I'm not sure I can follow all the consequences of this change, but as for tablegen usage it looks good.
Jul 12 2019
Looks good, thank you!
I think we can submit this.
Jul 11 2019
Jul 10 2019
But is it guaranteed that multiple uses by a single instruction will be adjacent in the list?
Sorry, there is a code for returnining unique instr, so we can use the count:
Yea, I thought there is a guaranty on unique instructions, but looking into defusechain_instr_iterator I don't see how this can be true, so let's continue using the set.
Matt, I'm not against using scan limiter, just about aborting the scan after the last use.
Jul 9 2019
I missed r363675 commit and I think the original semantics of isEXECMaskConstantBetweenDefAndUses should be restored: there should be no scan after the last use.
Jul 5 2019
LGTM. Thank you!
Jul 4 2019
Right, this is hard to follow even for me :). 3rd operand is src1_modifiers, you can use a junk value for this to check whether the DPP combiner don't crash and don't combine it.
I think modifiers are checked correctly by the existing code, but can you add a test for e64 encodings into dpp_combine.mir similar to what is under "check for floating point modifiers" comment?
I'm not sure if e64 instructions have modifiers that cannot be encoded into DPP version, need to check. Otherwise looks good, though I would split typo corrections into separate patch and submit without review.
Jun 18 2019
Jun 17 2019
Jun 14 2019
Jun 7 2019
Jun 5 2019
updated diff with per review issues done.
May 31 2019
Hi, this is the parent revision for the https://reviews.llvm.org/D62401.
May 29 2019
- fixed bug when an index was considered in-segment at the segment's end in some cases (lower_bound used instead of upper)
- added fast (binary search) skip for non-containing segments
- improved variable naming
May 28 2019
this implementation contains bug with upper segment boundary and misses opportunity to search on sorted segments too, fixing.
May 27 2019
replaced std::vector with SmallVector, moved out of the loop.
- replaced output std::vector with template output iterator, return bool on found
- added is_sorted assert
- improved description
May 24 2019
split LiveInterval.h change into different patch
Mar 14 2019
Feb 12 2019
Feb 11 2019
Feb 8 2019
Thank you Connor! I really appreciate your effort on this DPP work.
Feb 7 2019
Feb 4 2019
Jan 24 2019
Fixed issue with old = dpp src register when bound ctrl is off.
Jan 21 2019
Jan 18 2019
Jan 16 2019
Jan 15 2019
Jan 14 2019
I think we reached the state this can be submitted (and probably enabled with subsequent patch). This would allow any of us make other fixes if required.
Jan 11 2019
Thanks! I wonder how easy is to get confused there. I updated diff with the latest found problems fixed.
Jan 10 2019
Anyways, the other cases look like maybe some other clever optimization for the immediate is hindering this one, for example this with signed minimum:v_bfrev_b32_e32 v8, -2 ; 7E1058C2 s_nop 1 ; BF800001 v_mov_b32_dpp v8, v2 row_bcast:15 row_mask:0xa bank_mask:0xf ; 7E1002FA AF014202 v_min_i32_e32 v2, v2, v8 ; 18041102
Maybe this pass needs to be moved earlier in the pipeline?
Thank you, Connor.
Jan 9 2019
Dec 21 2018
If there is no strong objections I would like to submit my latest patch here since the pass is disabled and the patch looks better anyway. Otherwise I'll return from NY holidays only on Jan 11.
Dec 19 2018
Fixed issue with identity values and other cases, f32/f16 identity values to be added later.
Dec 13 2018
Connor, indeed, my bad, I'll try to fix this in a couple of days.
Dec 12 2018
updated diff, added tests.
Dec 7 2018
Dec 6 2018
Ok, thank you very much for the review and explanation, I'll try to address it shortly.
Ok, I'll disable it. I'm not sure about 3rd point: are you sayng the pass doesn't actually perform the optimization or it's fundamentally wrong? Because it implemented to handle "identity" cases for add, mul and min/max.
Dec 5 2018
Nov 30 2018
Nov 8 2018
fixed per review issues: