Page MenuHomePhabricator

colinl (Colin LeMahieu)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 24 2014, 9:24 AM (260 w, 2 d)

Recent Activity

Nov 27 2017

colinl abandoned D27426: Remove spacing from Hexagon instruction syntax to match canonical form which doesn't contain spaces around tokens..
Nov 27 2017, 8:25 AM

Mar 15 2017

colinl committed rL297926: [Hexagon] Fixing test from 297920 to add Hexagon triple..
[Hexagon] Fixing test from 297920 to add Hexagon triple.
Mar 15 2017, 7:04 PM
colinl committed rL297920: [Hexagon] Updating inline saturate lanes for v62 version..
[Hexagon] Updating inline saturate lanes for v62 version.
Mar 15 2017, 5:47 PM

Dec 5 2016

colinl retitled D27426: Remove spacing from Hexagon instruction syntax to match canonical form which doesn't contain spaces around tokens. from to Remove spacing from Hexagon instruction syntax to match canonical form which doesn't contain spaces around tokens..
Dec 5 2016, 1:26 PM

Dec 4 2016

colinl committed rL288637: [Hexagon] Adding additional tokenization characters in preparation for removing….
[Hexagon] Adding additional tokenization characters in preparation for removing…
Dec 4 2016, 9:02 PM
colinl committed rL288634: [Hexagon] Changing from literal numeric value to argument since #-1 will not….
[Hexagon] Changing from literal numeric value to argument since #-1 will not…
Dec 4 2016, 8:39 PM

Nov 10 2016

colinl added inline comments to D26214: [llvm] Implement support for -defsym assembler option.
Nov 10 2016, 1:17 PM

Nov 1 2016

colinl added a comment to D26214: [llvm] Implement support for -defsym assembler option.

LGTM after changing to a forward declaration.

Nov 1 2016, 3:15 PM

Oct 8 2016

colinl committed rL283665: [Hexagon] Adding change of flow max 1 (cofMax1) TS flag for marking this….
[Hexagon] Adding change of flow max 1 (cofMax1) TS flag for marking this…
Oct 8 2016, 10:27 AM

Oct 7 2016

colinl committed rL283582: [Hexagon][NFC] Using documented instruction type name V4LDST instead of MEMOP..
[Hexagon][NFC] Using documented instruction type name V4LDST instead of MEMOP.
Oct 7 2016, 12:20 PM

Oct 6 2016

colinl committed rL283514: [Hexagon] NFC Removing 'V4_' prefix from duplex instruction names..
[Hexagon] NFC Removing 'V4_' prefix from duplex instruction names.
Oct 6 2016, 5:25 PM
colinl committed rL283507: [Hexagon] NFC. Canonicalizing absolute address instruction names..
[Hexagon] NFC. Canonicalizing absolute address instruction names.
Oct 6 2016, 4:11 PM

Aug 29 2016

colinl added a comment to D22112: Disambiguate a constant with both 0B prefix and H suffix..

LGTM

Aug 29 2016, 9:19 AM

Aug 25 2016

colinl added a comment to D22112: Disambiguate a constant with both 0B prefix and H suffix..

There's probably not a really clean way to do this with our one-lexer-rules-them-all model for llvm-mc but I think if we can keep hex output where it was before we at least didn't make things worse.

Aug 25 2016, 9:48 AM

Aug 8 2016

colinl added inline comments to D22112: Disambiguate a constant with both 0B prefix and H suffix..
Aug 8 2016, 12:24 PM

Jul 8 2016

colinl added a comment to D22112: Disambiguate a constant with both 0B prefix and H suffix..

It looks like in X86MCAsmInfo.cpp AsmWriterFlavor controls AssemblerDialect which is tied with [Intel|ATT]AsmParserVariant in X86.td

Jul 8 2016, 2:19 PM
colinl added a comment to D22112: Disambiguate a constant with both 0B prefix and H suffix..

Since the parsing style is specified on the command line at startup, can a flag be attached to MCAsmInfo which specifies whether prefix-bool parsing is activated? It looks like there are similar things already put there such as CommentString and DollarIsPC

Jul 8 2016, 9:02 AM

Jun 2 2016

colinl added a comment to D19924: Representing bundle locked groups as fragments in MCAssembler.

I'll add a test for multiple bundle alignment directives.

Jun 2 2016, 1:24 PM

May 27 2016

colinl updated the diff for D19924: Representing bundle locked groups as fragments in MCAssembler.

Added more diff context.

May 27 2016, 1:43 PM

May 25 2016

colinl added a comment to D19924: Representing bundle locked groups as fragments in MCAssembler.

It looks like in order to get the better optimized final code there is a memory increase of around 12% while assembling. This is attributed to not being able to use the data fragment packing optimization for non-relaxable instructions and instead each instruction is in its own fragment.

May 25 2016, 2:20 PM

May 24 2016

colinl updated the diff for D19924: Representing bundle locked groups as fragments in MCAssembler.

Running the memory tests pointed out poor usage due to having a bundle lock/unlock fragment for each instruction fragment.

May 24 2016, 4:29 PM

May 9 2016

colinl updated the diff for D19924: Representing bundle locked groups as fragments in MCAssembler.

I retained the behavior of oring AlignToEnd across nested bundles and added back in comments explaining how bundling works as well as breaking up the expression in the writeNopData function for better self-documentation.

May 9 2016, 11:48 AM

May 6 2016

colinl added a comment to D13741: Introduce a *draft* of a code of conduct for the LLVM community and the associated reporting guide..
May 6 2016, 1:25 PM
colinl added a comment to D13741: Introduce a *draft* of a code of conduct for the LLVM community and the associated reporting guide..

I'm opposed to adopting this document. I don't think it solves a particular problem and it seems likely to create many.

May 6 2016, 9:47 AM

May 4 2016

colinl retitled D19924: Representing bundle locked groups as fragments in MCAssembler from to Representing bundle locked groups as fragments in MCAssembler.
May 4 2016, 9:52 AM

Apr 27 2016

colinl committed rL267798: [Hexagon] Merging nops in to previous packet rather than always creating a….
[Hexagon] Merging nops in to previous packet rather than always creating a…
Apr 27 2016, 2:43 PM
colinl committed rL267796: [MCAssembler] Allow backend to finalize layout post-relaxation..
[MCAssembler] Allow backend to finalize layout post-relaxation.
Apr 27 2016, 2:32 PM
colinl closed D19429: Give backends an opportunity to finish layout post-relaxation by committing rL267796: [MCAssembler] Allow backend to finalize layout post-relaxation..
Apr 27 2016, 2:32 PM

Apr 22 2016

colinl retitled D19429: Give backends an opportunity to finish layout post-relaxation from to Give backends an opportunity to finish layout post-relaxation.
Apr 22 2016, 12:16 PM

Apr 8 2016

colinl committed rL265822: Revert r265817.
Revert r265817
Apr 8 2016, 11:21 AM
colinl committed rL265817: [llvm-objdump] Printing hex instead of dec by default.
[llvm-objdump] Printing hex instead of dec by default
Apr 8 2016, 11:01 AM
colinl closed D18770: Change llvm-objdump to default to print hex immediates by default by committing rL265817: [llvm-objdump] Printing hex instead of dec by default.
Apr 8 2016, 11:00 AM

Apr 4 2016

colinl added a comment to D18770: Change llvm-objdump to default to print hex immediates by default.

Yes, GNU objdump does hex.

Apr 4 2016, 1:38 PM
colinl retitled D18770: Change llvm-objdump to default to print hex immediates by default from to Change llvm-objdump to default to print hex immediates by default.
Apr 4 2016, 12:53 PM

Mar 25 2016

colinl updated the diff for D15965: Add support for dumping relocations in non-relocatable files.

Is this the recommendation on how to print relocation section offsets inside executable files?

Mar 25 2016, 10:09 AM

Mar 24 2016

colinl added a comment to D15965: Add support for dumping relocations in non-relocatable files.

The assert is correct. Whatever is calling getRelocationOffset should
instead be trying to get the address.

Mar 24 2016, 11:33 AM

Mar 21 2016

colinl committed rL263971: [llvm-objdump] Printing relocations in executable and shared object files..
[llvm-objdump] Printing relocations in executable and shared object files.
Mar 21 2016, 12:20 PM
colinl closed D15965: Add support for dumping relocations in non-relocatable files by committing rL263971: [llvm-objdump] Printing relocations in executable and shared object files..
Mar 21 2016, 12:20 PM

Mar 18 2016

colinl committed rL263802: [MCParser] Accept uppercase radix variants 0X and 0B.
[MCParser] Accept uppercase radix variants 0X and 0B
Mar 18 2016, 11:27 AM
colinl closed D14781: Recognize 0X and 0B as a valid radix characters. by committing rL263802: [MCParser] Accept uppercase radix variants 0X and 0B.
Mar 18 2016, 11:27 AM
colinl abandoned D15874: Revert AsmParser changes.
Mar 18 2016, 10:12 AM
colinl closed D18251: Modify llvm-objdump to print disassembly failures inline.

Committed in r263793

Mar 18 2016, 9:35 AM
colinl committed rL263793: [llvm-objdump] Print <unknown> in place of instruction text if it couldn't be….
[llvm-objdump] Print <unknown> in place of instruction text if it couldn't be…
Mar 18 2016, 9:31 AM

Mar 17 2016

colinl added a comment to D15965: Add support for dumping relocations in non-relocatable files.

I'm noticing r215844 saying GNU objdump doesn't print relocations in non-relocatable files. This doesn't seem correct, with -emit-relocs objdump does seem to print relocations in executable and SO files.

Mar 17 2016, 12:56 PM
colinl retitled D18251: Modify llvm-objdump to print disassembly failures inline from to Modify llvm-objdump to print disassembly failures inline.
Mar 17 2016, 12:49 PM
colinl added a comment to D15965: Add support for dumping relocations in non-relocatable files.

Does this solution and test look acceptable?

Mar 17 2016, 10:06 AM

Mar 16 2016

colinl committed rL263657: [Hexagon] Adding missing break in switch statement. Extra operands would….
[Hexagon] Adding missing break in switch statement. Extra operands would…
Mar 16 2016, 1:05 PM

Mar 11 2016

colinl set the repository for D15965: Add support for dumping relocations in non-relocatable files to rL LLVM.
Mar 11 2016, 12:03 PM
colinl updated the diff for D15965: Add support for dumping relocations in non-relocatable files.

It looks like in the ELF spec, as you already noticed, it says r_offset contains the virtual address if the file type is ET_EXEC or ET_DYN so in those cases we look for the relocated section and subtract the address.

Mar 11 2016, 11:57 AM

Mar 1 2016

colinl committed rL262411: [NFC] Convert tabs to spaces..
[NFC] Convert tabs to spaces.
Mar 1 2016, 2:10 PM
colinl committed rL262400: [Hexagon] Modifying r262258 to only be in effect in the hand assembler path….
[Hexagon] Modifying r262258 to only be in effect in the hand assembler path…
Mar 1 2016, 1:42 PM

Feb 29 2016

colinl committed rL262258: [Hexagon] As a size optimization, not lazy extending TPREL or DTPREL variants….
[Hexagon] As a size optimization, not lazy extending TPREL or DTPREL variants…
Feb 29 2016, 1:26 PM
colinl committed rL262252: [Hexagon] Missed member initialization causing ubsan failure..
[Hexagon] Missed member initialization causing ubsan failure.
Feb 29 2016, 12:47 PM
colinl committed rL262243: [Hexagon] Setting sign mismatch flag on expression instead of using bit tricks..
[Hexagon] Setting sign mismatch flag on expression instead of using bit tricks.
Feb 29 2016, 11:22 AM
colinl committed rL262238: [Hexagon] Using MustExtend flag on expression instead of passing around bools..
[Hexagon] Using MustExtend flag on expression instead of passing around bools.
Feb 29 2016, 10:44 AM

Feb 17 2016

colinl committed rL261133: [Hexagon] Replacing reference/dereference with reference cast..
[Hexagon] Replacing reference/dereference with reference cast.
Feb 17 2016, 10:54 AM
colinl committed rL261118: [Hexagon] Loop instructions don't need special processing. Extension and….
[Hexagon] Loop instructions don't need special processing. Extension and…
Feb 17 2016, 10:18 AM

Feb 16 2016

colinl committed rL261006: [Hexagon] Adding relocation for code size, cold path optimization allowing a….
[Hexagon] Adding relocation for code size, cold path optimization allowing a…
Feb 16 2016, 12:42 PM

Feb 15 2016

colinl committed rL260903: [NFC] Fixing naming convention, lowercase start of function name..
[NFC] Fixing naming convention, lowercase start of function name.
Feb 15 2016, 10:52 AM
colinl committed rL260902: [Hexagon] Wrapping all MCExprs inside MCOperands within HexagonMCExpr to….
[Hexagon] Wrapping all MCExprs inside MCOperands within HexagonMCExpr to…
Feb 15 2016, 10:46 AM

Feb 11 2016

colinl removed a reviewer for D14256: [AsmParser] Backends can parameterize ASM tokenization.: mcrosier.
Feb 11 2016, 1:54 PM
colinl added a comment to D14256: [AsmParser] Backends can parameterize ASM tokenization..

The change motivation is because TableGen and the AsmParser recognize different token sets which caused them to tokenize in fundamentally different ways. Before this change if TableGen was presented with "if(p0) r0 = r0" it would tokenize it as { "if(p0)", "r0", "=", "r0" } and the AsmParser would tokenize it as { "if", "(", "p0", ")", "r0", "=', "r0" } Before this patch the set of tokens that are part of identifiers was fixed by the tokenizeAsmString switch table shared by all targets. The first inclination is to add the parenthesis tokens to the switch table but this causes issues in other targets, for instance in X86 the ST(0) register has a hard time being parsed with this change which means different targets have mutually exclusive tokenization rules hence the allowance for targets to specify their tokens.

Feb 11 2016, 1:50 PM

Feb 10 2016

colinl committed rL260401: [MC] Merge VK_PPC_TPREL in to generic VK_TPREL..
[MC] Merge VK_PPC_TPREL in to generic VK_TPREL.
Feb 10 2016, 10:36 AM
colinl closed D17038: [MC] Merge VK_PPC_TPREL in to generic VK_TPREL by committing rL260401: [MC] Merge VK_PPC_TPREL in to generic VK_TPREL..
Feb 10 2016, 10:36 AM
colinl updated the diff for D17038: [MC] Merge VK_PPC_TPREL in to generic VK_TPREL.
Feb 10 2016, 9:22 AM

Feb 9 2016

colinl added inline comments to D17038: [MC] Merge VK_PPC_TPREL in to generic VK_TPREL.
Feb 9 2016, 6:59 PM
colinl retitled D17038: [MC] Merge VK_PPC_TPREL in to generic VK_TPREL from to [MC] Merge VK_PPC_TPREL in to generic VK_TPREL.
Feb 9 2016, 1:17 PM
colinl committed rL260259: [Hexagon] Fixing relocation generation and adding tests..
[Hexagon] Fixing relocation generation and adding tests.
Feb 9 2016, 11:22 AM
colinl committed rL260258: [MC] Adding GOTREL expression variant..
[MC] Adding GOTREL expression variant.
Feb 9 2016, 11:22 AM

Feb 8 2016

colinl added a comment to D15874: Revert AsmParser changes.

Is there interest in pursuing this revert? The feedback so far has been against a revert due to causing out of tree churn.

Feb 8 2016, 1:44 PM

Feb 1 2016

colinl committed rL259380: [NFC] Referencing manual for reason why subregbit is checked.
[NFC] Referencing manual for reason why subregbit is checked
Feb 1 2016, 10:19 AM

Jan 12 2016

colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

The cost is higher than simply matching though it could be improved from where it is right now. One of the things we're focusing on is making sure the codebase is in sync with the community. We want to work on performance improvements though if we're not in sync our efforts will be wasted.

Jan 12 2016, 1:47 PM

Jan 11 2016

colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

I ran a profile on it and it seems like the extra time comes from two things we do called checking and shuffling. Checking verifies the sub instructions in the VLIW instruction satisfy architecture requirements. Shuffling allows the assembly writer to write instructions in a bundle in any order which the assembler correctly orders in binary form.

Jan 11 2016, 12:16 PM
colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

Hah, you're right, good catch. I changed the test to "r0=mpy(r0.l, r0.l):<<1:sat" and it definitely went sub-optimal.

Jan 11 2016, 11:30 AM
colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

I hadn't run a benchmark before though I made a file with 1 million wait(r0) instructions, this is the last entry in the table so it should trigger the worst case. The file amounts to 10mb and assembles to an object around 4mb. For comparison I made an x86 file with 1 million "mov eax, cs" instructions.

Jan 11 2016, 9:45 AM

Jan 8 2016

colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

For reference before the r256669 the binary size of all LLVM tools in release mode with a MinGW build was 78,331,196 and the size with the patch is 77,467,273, approximately 1%. Is the binary size difference of the tools what spawned the investigation?

Jan 8 2016, 12:03 PM
colinl added a reviewer for D15965: Add support for dumping relocations in non-relocatable files: mcrosier.
Jan 8 2016, 9:07 AM

Jan 7 2016

colinl retitled D15965: Add support for dumping relocations in non-relocatable files from to Add support for dumping relocations in non-relocatable files.
Jan 7 2016, 12:22 PM

Jan 5 2016

colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

Most but not all instructions have mnemonics e.g. "r0 = r1". Lots have what appear to be a mnemonic but actually isn't "if (p0) r0 = add(r1, r2)" a large swath of instructions start with 'if' but that's not actually the mnemonic. The version of the parser we had internally before this version did as you suggested, it searched for a string token in the operand list, added a dummy operand to the end and sliced the head operands off and put them after the dummy value. The asm parser did a similar thing and once matched, it would go back through the MCInst and reorder the operands to the correct position.

Jan 5 2016, 8:34 AM

Jan 4 2016

colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

I agree about the scalability of the match table. Part of the goal with this design was to impact other targets as little as possible. If a design required a rewrite of all targets it would have probably been a non-started as far as getting Hexagon parsing working. The change preserved the existing behavior of string match + small linear search if the first actual parsed operand was a string. This was to have no performance impact for matching on existing targets.

Jan 4 2016, 5:12 PM
colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

Hey everyone, I have a revert up for review which undoes the changes in this three series of patches. http://reviews.llvm.org/D15874

Jan 4 2016, 3:41 PM
colinl added reviewers for D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements.: kparzysz, adasgupt.
Jan 4 2016, 3:39 PM
colinl retitled D15874: Revert AsmParser changes from to Revert AsmParser changes.
Jan 4 2016, 2:54 PM
colinl added a comment to D14256: [AsmParser] Backends can parameterize ASM tokenization..

I see the size_t loop variable was mistakenly changed to an unsigned.

Jan 4 2016, 10:56 AM
colinl added a comment to D14257: [AsmParser] Generalize matching for grammars without mnemonic-lead statements..

Hey guys, I'm sorry about any issues that were created by not waiting for review on these patches, I'll definitely work through whatever we need to clean things up.

Jan 4 2016, 10:51 AM

Dec 4 2015

colinl committed rL254719: [Hexagon] Using multiply instead of shift on signed number which can be UB.
[Hexagon] Using multiply instead of shift on signed number which can be UB
Dec 4 2015, 7:51 AM

Dec 3 2015

colinl committed rL254652: [Hexagon] Adding shuffling resources for HVX instructions and tests for….
[Hexagon] Adding shuffling resources for HVX instructions and tests for…
Dec 3 2015, 1:47 PM
colinl added a comment to D14994: Enable MatchRegisterName to match register altnames.

Hmm interesting. That code section seems to be dead, for instance I did:

Dec 3 2015, 1:09 PM
colinl added a comment to D14994: Enable MatchRegisterName to match register altnames.

Is there a reason to not emit all AltNames as register matches? This way we aren't putting a requirement on the number of altnames for a register.

Dec 3 2015, 12:19 PM
colinl committed rL254616: [Hexagon] NFC Using canonicalizePacket to compound/duplex/pad packets rather….
[Hexagon] NFC Using canonicalizePacket to compound/duplex/pad packets rather…
Dec 3 2015, 8:40 AM

Dec 2 2015

colinl abandoned D13915: Properly evaluate MCBinaryExpr with a constant on one side..

Yes, the crash I was seeing went away. Thanks for the reminder.

Dec 2 2015, 3:17 PM

Nov 30 2015

colinl committed rL254375: [Hexagon] Disabling failing safestack test.
[Hexagon] Disabling failing safestack test
Nov 30 2015, 8:59 PM
colinl committed rL254307: [Hexagon] NFC Reordering headers..
[Hexagon] NFC Reordering headers.
Nov 30 2015, 9:35 AM

Nov 18 2015

colinl accepted D14781: Recognize 0X and 0B as a valid radix characters..

LGTM

Nov 18 2015, 11:19 AM

Nov 13 2015

colinl committed rL253090: [Hexagon] Fixing memory leak during relaxation by allocating MCInst in….
[Hexagon] Fixing memory leak during relaxation by allocating MCInst in…
Nov 13 2015, 1:48 PM
colinl committed rL253056: [Hexagon] Factoring bundle creation in to a utility function..
[Hexagon] Factoring bundle creation in to a utility function.
Nov 13 2015, 9:45 AM
colinl committed rL253019: [Hexagon] Fixing leak in padEndloop by allocating in MCContext..
[Hexagon] Fixing leak in padEndloop by allocating in MCContext.
Nov 13 2015, 12:00 AM

Nov 12 2015

colinl committed rL253000: [Hexagon] NFC. Adding a number of packet correctness tests..
[Hexagon] NFC. Adding a number of packet correctness tests.
Nov 12 2015, 5:48 PM
colinl committed rL252989: [Hexagon] Adding relaxation functionality to backend and test..
[Hexagon] Adding relaxation functionality to backend and test.
Nov 12 2015, 5:14 PM
colinl committed rL252969: [Hexagon] Adding checks for values out of operand range and correct new-value….
[Hexagon] Adding checks for values out of operand range and correct new-value…
Nov 12 2015, 3:30 PM