thegameg (Francis Visoiu Mistrih)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 23 2015, 4:41 AM (117 w, 3 d)

Recent Activity

Mon, Feb 19

thegameg committed rL325512: [CodeGen] Fix tests breaking after r325505.
[CodeGen] Fix tests breaking after r325505
Mon, Feb 19, 7:54 AM
thegameg committed rL325505: Revert "[CodeGen] Move printing '\n' from MachineInstr::print to….
Revert "[CodeGen] Move printing '\n' from MachineInstr::print to…
Mon, Feb 19, 7:11 AM

Thu, Feb 15

thegameg updated the diff for D43337: [CodeGen] Don't omit any redundant information in -debug output.

Forget the asserts part.

Thu, Feb 15, 11:32 AM
thegameg added a comment to D43337: [CodeGen] Don't omit any redundant information in -debug output.

Printing different things depending on whether asserts are enabled feels strange. Can you explain the motivation here?

Thu, Feb 15, 11:00 AM
Herald updated subscribers of D13793: [X86AsmBackend] Emit compact unwind for register-sized stacks.
Thu, Feb 15, 9:39 AM
thegameg created D43337: [CodeGen] Don't omit any redundant information in -debug output.
Thu, Feb 15, 8:44 AM
thegameg committed rL325258: [CodeGen] Separate MBB metadata from instructions in -debug printing.
[CodeGen] Separate MBB metadata from instructions in -debug printing
Thu, Feb 15, 8:27 AM
thegameg committed rL325251: [CodeGen] Print irreducible loop header weight as a MIR comment.
[CodeGen] Print irreducible loop header weight as a MIR comment
Thu, Feb 15, 7:29 AM

Wed, Feb 14

thegameg committed rL325166: [CodeGen] Print predecessors, successors, then liveins in -debug printing.
[CodeGen] Print predecessors, successors, then liveins in -debug printing
Wed, Feb 14, 12:25 PM
thegameg added a comment to D41762: [DWARF] Incorrect prologue end line record..

Thanks @CarlosAlbertoEnciso, I finally understood the original concern about shrink-wrapping. LGTM.

Wed, Feb 14, 9:11 AM
thegameg added a comment to D41762: [DWARF] Incorrect prologue end line record..

IIUC, enabling/disabling shrink-wrapping does not move the prologue_end, so this LGTM.

If I understand the code correctly, in case of shrink-wrapping kicking in, prologue_end will be at the beginning of the function, while without shrink-wrapping, it will be at the end of the prologue. I believe that's correct, right?

Hi,

I tried your given test case with the same command line options and this is the assembler generated for both cases:

Wed, Feb 14, 6:05 AM

Tue, Feb 13

thegameg added a comment to D41762: [DWARF] Incorrect prologue end line record..

IIUC, enabling/disabling shrink-wrapping does not move the prologue_end, so this LGTM.

Tue, Feb 13, 10:41 AM
thegameg committed rL325032: [CodeGen] Print bundled instructions using the MIR syntax in -debug output.
[CodeGen] Print bundled instructions using the MIR syntax in -debug output
Tue, Feb 13, 10:10 AM

Fri, Feb 9

thegameg committed rL324772: [X86][MC] Fix assembling rip-relative addressing + immediate displacements.
[X86][MC] Fix assembling rip-relative addressing + immediate displacements
Fri, Feb 9, 1:49 PM
thegameg closed D43050: [X86][MC] Fix assembling rip-relative addressing + immediate displacements.
Fri, Feb 9, 1:49 PM
thegameg committed rL324769: [CodeGen] Print predecessors as MIR comments in -debug output.
[CodeGen] Print predecessors as MIR comments in -debug output
Fri, Feb 9, 11:48 AM

Thu, Feb 8

thegameg committed rL324694: [CodeGen] Unify the syntax of MBB liveins in MIR and -debug output.
[CodeGen] Unify the syntax of MBB liveins in MIR and -debug output
Thu, Feb 8, 5:18 PM
thegameg committed rL324690: [CodeGen] Don't compute BranchProbability for MBB::print.
[CodeGen] Don't compute BranchProbability for MBB::print
Thu, Feb 8, 4:43 PM
thegameg committed rL324685: [CodeGen] Unify the syntax of MBB successors in MIR and -debug output.
[CodeGen] Unify the syntax of MBB successors in MIR and -debug output
Thu, Feb 8, 4:15 PM
thegameg committed rL324686: [CodeGen] Only print successors when the list is not empty.
[CodeGen] Only print successors when the list is not empty
Thu, Feb 8, 4:15 PM
thegameg committed rL324681: [CodeGen] Move printing '\n' from MachineInstr::print to MachineBasicBlock….
[CodeGen] Move printing '\n' from MachineInstr::print to MachineBasicBlock…
Thu, Feb 8, 3:44 PM
thegameg removed a reviewer for D42898: Do not spill CSR to stack on entry to noreturn functions: thegameg.
Thu, Feb 8, 10:18 AM
thegameg resigned from D42898: Do not spill CSR to stack on entry to noreturn functions.

I might be missing a few details of what this change might affect.

Thu, Feb 8, 10:18 AM

Wed, Feb 7

thegameg committed rL324563: [CodeGen] Print MachineBasicBlock labels using MIR syntax in -debug output.
[CodeGen] Print MachineBasicBlock labels using MIR syntax in -debug output
Wed, Feb 7, 9:05 PM
thegameg added inline comments to D41765: [CodeGen] Provide an advanced shrink-wrapping interface.
Wed, Feb 7, 4:50 PM
thegameg updated the diff for D41765: [CodeGen] Provide an advanced shrink-wrapping interface.
  • Fix typo
  • Iterate on MBB in reverse to catch terminator uses first
Wed, Feb 7, 4:49 PM
thegameg created D43050: [X86][MC] Fix assembling rip-relative addressing + immediate displacements.
Wed, Feb 7, 4:11 PM

Tue, Feb 6

thegameg added a comment to D42898: Do not spill CSR to stack on entry to noreturn functions.

It could be a call to some library function (from a user-provided library). I agree that this is a very unlikely scenario, but we've had a customer report a bug related to a similar situation.

Tue, Feb 6, 2:51 PM
thegameg added a comment to D41463: [CodeGen] Add a new pass to sink Copy instructions after RA.

For me this is generally ok, but I would wait for the other reviewers to see if there are any concerns.

Tue, Feb 6, 2:03 PM
thegameg added inline comments to D41765: [CodeGen] Provide an advanced shrink-wrapping interface.
Tue, Feb 6, 1:57 PM
thegameg updated the diff for D41765: [CodeGen] Provide an advanced shrink-wrapping interface.

Address review concerns.

Tue, Feb 6, 1:57 PM

Mon, Feb 5

thegameg updated the diff for D41765: [CodeGen] Provide an advanced shrink-wrapping interface.
  • Stop looping if none of the elements are tracked anymore.
  • Let the caller decide what to do with untracked elements.
  • Comments / style updates.
Mon, Feb 5, 3:59 PM
thegameg added a comment to D42898: Do not spill CSR to stack on entry to noreturn functions.

It looks like this transform destroys stack traces on non-x86 platforms. That technically isn't wrong, I guess, but it seems unfriendly (for example, LLVM produces a stack trace on an assertion failure).

Mon, Feb 5, 3:51 PM
thegameg committed rL324285: [PEI] Fix failing test caused by r324283.
[PEI] Fix failing test caused by r324283
Mon, Feb 5, 3:10 PM
thegameg committed rL324283: [PEI][NFC] Move StackSize opt-remark code next to -warn-stack code.
[PEI][NFC] Move StackSize opt-remark code next to -warn-stack code
Mon, Feb 5, 2:50 PM
thegameg added a comment to D42898: Do not spill CSR to stack on entry to noreturn functions.

One last comment and it should be good. Thanks!

Mon, Feb 5, 2:39 PM
thegameg added a reviewer for D42898: Do not spill CSR to stack on entry to noreturn functions: thegameg.
Mon, Feb 5, 2:39 PM

Sun, Feb 4

thegameg updated subscribers of D42898: Do not spill CSR to stack on entry to noreturn functions.

Thanks for working on this!

Sun, Feb 4, 10:12 PM

Fri, Feb 2

thegameg raised a concern with rL324098: [CodeGen][va_args] Correct Vector Struct va-arg 'in_reg' code gen.

It seems like this commit breaks all release bots:

Fri, Feb 2, 11:58 AM

Wed, Jan 31

thegameg updated the summary of D41765: [CodeGen] Provide an advanced shrink-wrapping interface.
Wed, Jan 31, 3:07 PM
thegameg updated the diff for D41765: [CodeGen] Provide an advanced shrink-wrapping interface.

Split DefaultShrinkWrapper and DefaultShrinkWrapInfo into:

  • DominatorShrinkWrapper
  • CSRFIShrinkWrapInfo
Wed, Jan 31, 3:06 PM
thegameg accepted D42746: MIR PhysReg sigil change from '%' to '$'.

I think MIRLangRef needs to be updated, but other than that, LGTM!

Wed, Jan 31, 10:56 AM

Tue, Jan 30

thegameg added a comment to D42600: [WIP][Shrink-wrap]split restore point.

Regarding the SESE approach, I think it wouldn't be enough because what you want and not given by SESE is *new* common (post)dominator. E.g., in the motivating example we wanted to merge (A->C) (B->C) into (A->common) (B->common) (common->C).

Tue, Jan 30, 5:36 PM
thegameg added a comment to D42600: [WIP][Shrink-wrap]split restore point.

Thanks for working on this! I think the idea is worth pursuing. This kinda reminds me of Post Register Allocation Spill Code Optimization, Christopher Lupo, Kent D. Wilken. A similar issue is what they describe in §4.8. I think if you extract the blocks C, D, E, F from the example, that's your function.

Tue, Jan 30, 4:00 PM
thegameg added inline comments to D39386: [Power9] Allow gpr callee saved spills in prologue to vector registers rather than stack.
Tue, Jan 30, 1:54 PM

Mon, Jan 29

thegameg updated the diff for D42377: [CodeGen] Use MIR syntax for MachineMemOperand printing.
  • Added support for addrspace in r323521.
  • Rebase
Mon, Jan 29, 5:39 PM
thegameg accepted D40979: [DWARF] Allow duplication of tails with CFI instructions.

This LGTM, thanks.

Mon, Jan 29, 5:17 PM

Sat, Jan 27

thegameg added inline comments to D39386: [Power9] Allow gpr callee saved spills in prologue to vector registers rather than stack.
Sat, Jan 27, 6:14 AM

Fri, Jan 26

thegameg committed rL323521: [MIR] Add support for addrspace in MIR.
[MIR] Add support for addrspace in MIR
Fri, Jan 26, 3:51 AM
thegameg closed D42502: [MIR] Add support for addrspace in MIR.
Fri, Jan 26, 3:51 AM

Thu, Jan 25

thegameg updated the diff for D42502: [MIR] Add support for addrspace in MIR.

Update some more failing tests.

Thu, Jan 25, 5:59 AM

Wed, Jan 24

thegameg added inline comments to D42512: [X86] When using Win64 ABI, exit with error if SSE is disabled for varargs.
Wed, Jan 24, 5:13 PM
thegameg updated the diff for D42502: [MIR] Add support for addrspace in MIR.

Add test case with addrspace 0.

Wed, Jan 24, 1:46 PM
thegameg created D42502: [MIR] Add support for addrspace in MIR.
Wed, Jan 24, 1:24 PM
thegameg updated the summary of D42502: [MIR] Add support for addrspace in MIR.
Wed, Jan 24, 1:24 PM
thegameg added a comment to D41463: [CodeGen] Add a new pass to sink Copy instructions after RA.

Is there anything preventing us to sink this even deeper than "one of the successors"? I think we should go further with this instead of special casing this particular issue.

As long as there is no the register dependency, we can continue sinking a COPY deeply. I believe sinkcopy5() in post-ra-machine-sink.mir shows this case.

Wed, Jan 24, 1:20 PM
thegameg added a comment to D41463: [CodeGen] Add a new pass to sink Copy instructions after RA.

Thanks for working on this! I've seen a few 1-2% improvements on arm64 with this enabled and I think it solves one of the issue that has been frequently raised with shrink-wrapping.

Wed, Jan 24, 12:01 PM

Tue, Jan 23

thegameg added inline comments to D42377: [CodeGen] Use MIR syntax for MachineMemOperand printing.
Tue, Jan 23, 9:34 AM
thegameg added inline comments to D42377: [CodeGen] Use MIR syntax for MachineMemOperand printing.
Tue, Jan 23, 8:46 AM

Jan 22 2018

thegameg created D42377: [CodeGen] Use MIR syntax for MachineMemOperand printing.
Jan 22 2018, 8:10 AM

Jan 19 2018

thegameg committed rL322936: [CodeGen] Unify printing format of debug-location in both MIR and -debug.
[CodeGen] Unify printing format of debug-location in both MIR and -debug
Jan 19 2018, 3:46 AM

Jan 18 2018

thegameg added a comment to D42239: [CodeGen] Print RegClasses on MI in verbose mode.

Sorry, I missed your comment @MatzeB. IsStandalone sounds better indeed, I fixed it in r322867.

Jan 18 2018, 10:08 AM
thegameg committed rL322868: [CodeGen][NFC] Rename IsVerbose to IsStandalone in Machine*::print.
[CodeGen][NFC] Rename IsVerbose to IsStandalone in Machine*::print
Jan 18 2018, 10:07 AM
thegameg committed rL322867: [CodeGen] Print RegClasses on MI in verbose mode.
[CodeGen] Print RegClasses on MI in verbose mode
Jan 18 2018, 10:01 AM
thegameg closed D42239: [CodeGen] Print RegClasses on MI in verbose mode.
Jan 18 2018, 10:00 AM
thegameg committed rL322848: [CodeGen][NFC] Refactor MachineInstr::print.
[CodeGen][NFC] Refactor MachineInstr::print
Jan 18 2018, 6:53 AM
thegameg created D42239: [CodeGen] Print RegClasses on MI in verbose mode.
Jan 18 2018, 5:51 AM

Jan 17 2018

thegameg updated subscribers of D39386: [Power9] Allow gpr callee saved spills in prologue to vector registers rather than stack.
Jan 17 2018, 9:54 AM

Jan 16 2018

thegameg committed rL322584: [CodeGen] Skip some instructions that shouldn't affect shrink-wrapping.
[CodeGen] Skip some instructions that shouldn't affect shrink-wrapping
Jan 16 2018, 10:56 AM
thegameg closed D42119: [CodeGen] Skip some instructions that shouldn't affect shrink-wrapping.
Jan 16 2018, 10:56 AM
thegameg created D42119: [CodeGen] Skip some instructions that shouldn't affect shrink-wrapping.
Jan 16 2018, 10:52 AM
thegameg added a comment to rL322086: [CodeGen] Don't print register classes in -debug output.

Hmm this change is not equivalent. Take a random example of a testcase here:

%2:gpr = SMULBB %1, %1, pred:14, pred:%noreg; GPR:%2,%1,%1

now becomes:

%2:gpr = SMULBB %1, %1, pred:14, pred:%noreg

the register class of %1 is no longer visible.

While it is fine to only print the regclass for definitions when printing a whole .mir file, when we only print a single instruction we need the register class on use operands as well!

Jan 16 2018, 9:50 AM
thegameg added inline comments to D41187: Ignore metainstructions during the shrink wrap analysis.
Jan 16 2018, 3:35 AM
thegameg committed rL322542: [CodeGen] Remove special case of printing subRegIdx from MachineInstr::print.
[CodeGen] Remove special case of printing subRegIdx from MachineInstr::print
Jan 16 2018, 2:54 AM
thegameg committed rL322541: [CodeGen][NFC] Correct case for printSubRegIdx.
[CodeGen][NFC] Correct case for printSubRegIdx
Jan 16 2018, 2:54 AM

Jan 15 2018

thegameg added inline comments to D40979: [DWARF] Allow duplication of tails with CFI instructions.
Jan 15 2018, 9:47 AM

Jan 12 2018

thegameg updated subscribers of D41187: Ignore metainstructions during the shrink wrap analysis.
Jan 12 2018, 4:18 AM

Jan 10 2018

thegameg committed rL322198: [MIR] Update MIRLangRef with documentation on bundled instructions.
[MIR] Update MIRLangRef with documentation on bundled instructions
Jan 10 2018, 9:54 AM
thegameg closed D41872: [MIR] Update MIRLangRef with bundled instructions.
Jan 10 2018, 9:54 AM
thegameg added inline comments to D41872: [MIR] Update MIRLangRef with bundled instructions.
Jan 10 2018, 4:16 AM
thegameg updated the diff for D41872: [MIR] Update MIRLangRef with bundled instructions.

Go with Matthias' explanation.

Jan 10 2018, 4:16 AM

Jan 9 2018

thegameg added a comment to D41864: DBG_VALUE insertion for spills breaks bundles.

I don't know if this makes any sense, but could we maybe test this by constructing a bundled spill in a MIR file for an in-tree target?

cc @thegameg

Jan 9 2018, 10:42 AM · debug-info
thegameg created D41872: [MIR] Update MIRLangRef with bundled instructions.
Jan 9 2018, 10:42 AM
thegameg committed rL322096: [CodeGen] Don't print "pred:" and "opt:" in -debug output.
[CodeGen] Don't print "pred:" and "opt:" in -debug output
Jan 9 2018, 9:32 AM
thegameg closed D41870: [CodeGen] Don't print "pred:" and "opt:" in -debug output.
Jan 9 2018, 9:32 AM
thegameg created D41870: [CodeGen] Don't print "pred:" and "opt:" in -debug output.
Jan 9 2018, 9:13 AM
thegameg committed rL322088: [CodeGen] Print frame-setup/destroy flags in -debug output like we do in MIR.
[CodeGen] Print frame-setup/destroy flags in -debug output like we do in MIR
Jan 9 2018, 8:13 AM
thegameg committed rL322086: [CodeGen] Don't print register classes in -debug output.
[CodeGen] Don't print register classes in -debug output
Jan 9 2018, 7:41 AM
thegameg abandoned D33419: BitVector: use iterator_facade.
Jan 9 2018, 3:36 AM
thegameg committed rL322071: [MIR] Add support for the frame-destroy MachineInstr flag.
[MIR] Add support for the frame-destroy MachineInstr flag
Jan 9 2018, 3:34 AM
thegameg closed D41509: [MIR] Add support for the frame-destroy MachineInstr flag.
Jan 9 2018, 3:34 AM

Jan 8 2018

thegameg added a comment to D40979: [DWARF] Allow duplication of tails with CFI instructions.

Hmm yeah, I guess compact unwind is important for code size. So we would prefer to stay with the current behavior on darwin as you did with this patch. (Though I've never seen actual numbers of how big an impact it has).

Jan 8 2018, 12:08 PM
thegameg abandoned D36109: [CodeGen] Provide an advanced shrink-wrapping interface.

Going forward with this: https://reviews.llvm.org/D41765 which is a more incremental approach.

Jan 8 2018, 8:21 AM
thegameg updated the diff for D41765: [CodeGen] Provide an advanced shrink-wrapping interface.

DefaultShrinkWrapper doesn't need the RegScavenger, only DefaultShrinkWrapInfo.

Jan 8 2018, 6:45 AM
thegameg committed rL321987: [X86] Remove side-effects from determineCalleeSaves.
[X86] Remove side-effects from determineCalleeSaves
Jan 8 2018, 2:47 AM
thegameg closed D41703: [X86] Remove side-effects from determineCalleeSaves.
Jan 8 2018, 2:47 AM

Jan 5 2018

thegameg added a comment to D41765: [CodeGen] Provide an advanced shrink-wrapping interface.

Through this change, do you intend to support the partial shrink-wrapping? What other extensions are you planning on after this change?

Jan 5 2018, 11:22 AM
thegameg created D41765: [CodeGen] Provide an advanced shrink-wrapping interface.
Jan 5 2018, 7:24 AM

Jan 3 2018

thegameg committed rL321758: [CodeGen][NFC] Remove unused function declaration.
[CodeGen][NFC] Remove unused function declaration
Jan 3 2018, 12:57 PM
thegameg created D41703: [X86] Remove side-effects from determineCalleeSaves.
Jan 3 2018, 8:58 AM