dsanders (Daniel Sanders)
User

Projects

User does not belong to any projects.

User Details

User Since
Aug 19 2013, 3:30 PM (200 w, 6 d)

Recent Activity

Fri, Jun 23

dsanders updated the diff for D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..

Fix the nits ( -> /, Optional<std::pair<...>>, etc.)

Fri, Jun 23, 2:44 AM
dsanders added inline comments to D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..
Fri, Jun 23, 2:41 AM

Tue, Jun 20

dsanders accepted D34372: [GISel]: New Opcode G_FMA for fused multiply addition.

LGTM with a nit.

Tue, Jun 20, 8:54 AM
dsanders added inline comments to D33758: [globalisel][tablegen] Partially fix compile-time regressions by converting matcher to state-machine(s).
Tue, Jun 20, 6:29 AM
dsanders added a comment to D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..

Made all requested changes in the commit rL305791

Tue, Jun 20, 5:37 AM
dsanders committed rL305791: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..
[globalisel][tablegen] Add support for COPY_TO_REGCLASS.
Tue, Jun 20, 5:37 AM
dsanders closed D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS. by committing rL305791: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..
Tue, Jun 20, 5:37 AM

Tue, Jun 13

dsanders added inline comments to D32746: [globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0..
Tue, Jun 13, 4:45 PM
dsanders committed rL305340: [globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0..
[globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0.
Tue, Jun 13, 4:43 PM
dsanders closed D32746: [globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0..
Tue, Jun 13, 4:43 PM

Tue, Jun 6

dsanders updated the diff for D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..

Constrain the source operand too. This fixes the odd GPR64all, it's now GPR64sp.

Tue, Jun 6, 6:45 PM
dsanders added inline comments to D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..
Tue, Jun 6, 6:28 PM

Mon, Jun 5

dsanders updated the diff for D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..

Resubmit the patch minus the bits that were already in D33590. Sorry about that.

Mon, Jun 5, 5:39 PM
dsanders updated the diff for D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..

Update the SelectionDAG rules for FPR->GPR bitcasts to use GPR32all and GPR64all

Mon, Jun 5, 5:27 PM
dsanders added a comment to D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..

The remaining issue I mentioned in the update is this one.

  • Double check why tablegen gives us gpr32 instead of gpr32all
Mon, Jun 5, 3:35 PM
dsanders updated the diff for D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..

Fix all the nits.

Mon, Jun 5, 3:32 PM

Fri, Jun 2

dsanders updated the diff for D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..

Fix the X86 machine verifier bug where EXTRACT_SUBREG could emit a subregister
copy with classes that didn't quite support it. TableGen now finds a suitable
pair of classes. However, if this results in a copy of the operand into another
class, tablegen will currently refuse to import SelectionDAG because we lack
multi-insn emission at the moment. Support for that will start to be introduced
as part of the state-machine patches.

Fri, Jun 2, 6:12 AM

Thu, Jun 1

dsanders removed a dependent revision for D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual.: D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
Thu, Jun 1, 3:23 AM
dsanders edited dependencies for D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain., added: 1; removed: 2.
Thu, Jun 1, 3:23 AM
dsanders removed a dependent revision for D32275: [globalisel][tablegen] Add several GINodeEquiv's for operators that do not require additional support.: D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
Thu, Jun 1, 3:23 AM
dsanders added a dependent revision for D33766: [globalisel][tablegen] Finish fixing compile-time regressions by merging the matcher and emitter state machines.: D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
Thu, Jun 1, 3:23 AM
dsanders reopened D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..

This was reverted due to compile-time regressions so re-open it and add it to the end of the patch series that fixes that.

Thu, Jun 1, 3:22 AM
dsanders added a dependent revision for D33764: [globalisel][tablegen] Added instruction emission to the state-machine-based matcher.: D33766: [globalisel][tablegen] Finish fixing compile-time regressions by merging the matcher and emitter state machines..
Thu, Jun 1, 3:21 AM
dsanders updated the summary of D33766: [globalisel][tablegen] Finish fixing compile-time regressions by merging the matcher and emitter state machines..
Thu, Jun 1, 3:21 AM
dsanders created D33766: [globalisel][tablegen] Finish fixing compile-time regressions by merging the matcher and emitter state machines..
Thu, Jun 1, 3:20 AM
dsanders added a dependent revision for D33758: [globalisel][tablegen] Partially fix compile-time regressions by converting matcher to state-machine(s): D33764: [globalisel][tablegen] Added instruction emission to the state-machine-based matcher..
Thu, Jun 1, 2:21 AM
dsanders created D33764: [globalisel][tablegen] Added instruction emission to the state-machine-based matcher..
Thu, Jun 1, 2:21 AM
dsanders added a comment to D33758: [globalisel][tablegen] Partially fix compile-time regressions by converting matcher to state-machine(s).

Replace the matcher if-statements for each rule with a state-machine. This
significantly reduces compile time, memory allocations, and cumulative memory
allocation when compiling AArch64InstructionSelector.cpp.o after r303259 is
recommitted.

My guess is that the compiler compile time goes down simply because tablegen produces far less code?

Thu, Jun 1, 1:17 AM
dsanders added a comment to D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..

After re-testing this on current trunk, there's a bug in X86 due to GR64 not fully supporting the 8bit subregister index. I'll fix this shortly using failedImport() for this case since we don't have multi-insn emission quite yet. The following patches introduce the infrastructure for it.

Thu, Jun 1, 12:09 AM
dsanders added a dependent revision for D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG.: D33758: [globalisel][tablegen] Partially fix compile-time regressions by converting matcher to state-machine(s).
Thu, Jun 1, 12:07 AM
dsanders added a dependency for D33758: [globalisel][tablegen] Partially fix compile-time regressions by converting matcher to state-machine(s): D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..
Thu, Jun 1, 12:07 AM
dsanders created D33758: [globalisel][tablegen] Partially fix compile-time regressions by converting matcher to state-machine(s).
Thu, Jun 1, 12:06 AM

May 26 2017

dsanders added a dependent revision for D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS.: D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..
May 26 2017, 7:10 AM
dsanders created D33596: [globalisel][tablegen] Add support for EXTRACT_SUBREG..
May 26 2017, 7:10 AM
dsanders created D33590: [globalisel][tablegen] Add support for COPY_TO_REGCLASS..
May 26 2017, 3:40 AM

May 25 2017

dsanders updated the diff for D32746: [globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0..

Factored out the optimization into MachineIRBuilder.

May 25 2017, 8:45 AM

May 24 2017

dsanders committed rL303727: Explicitly set CPU and -slow-incdec to try to fix r303678's test on llvm-clang….
Explicitly set CPU and -slow-incdec to try to fix r303678's test on llvm-clang…
May 24 2017, 12:02 AM

May 23 2017

dsanders committed rL303721: Revert r303720: Tweak r303678's test to try to fix llvm-clang-x86_64-expensive….
Revert r303720: Tweak r303678's test to try to fix llvm-clang-x86_64-expensive…
May 23 2017, 11:45 PM
dsanders committed rL303720: Tweak r303678's test to try to fix llvm-clang-x86_64-expensive-checks-win..
Tweak r303678's test to try to fix llvm-clang-x86_64-expensive-checks-win.
May 23 2017, 11:05 PM
dsanders committed rL303683: Fix unused variable warnings after r303678.
Fix unused variable warnings after r303678
May 23 2017, 1:03 PM
dsanders committed rL303678: [globalisel][tablegen] Add support for (set $dst, 1) and test X86's OptForSize….
[globalisel][tablegen] Add support for (set $dst, 1) and test X86's OptForSize…
May 23 2017, 12:33 PM
dsanders closed D32791: [globalisel][tablegen] Add support for (set $dst, 1) and test X86's OptForSize predicate..
May 23 2017, 12:33 PM

May 22 2017

dsanders committed rL303542: Revert r303259 - [globalisel][tablegen] Import rules containing….
Revert r303259 - [globalisel][tablegen] Import rules containing…
May 22 2017, 3:14 AM

May 19 2017

dsanders created D33352: [globalisel][tablegen] Fix incorrect inclusion of VS_32/VS_64 in [VS]GPRRegBank.
May 19 2017, 4:49 AM
dsanders committed rL303418: [globalisel][tablegen] Demote OptForSize/OptForMinSize/ForCodeSize to per….
[globalisel][tablegen] Demote OptForSize/OptForMinSize/ForCodeSize to per…
May 19 2017, 4:22 AM
dsanders closed D32861: [globalisel][tablegen] Demote OptForSize/OptForMinSize/ForCodeSize to per-function predicates..
May 19 2017, 4:21 AM

May 18 2017

dsanders committed rL303341: Re-commit: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
Re-commit: [globalisel][tablegen] Import rules containing intrinsic_wo_chain.
May 18 2017, 3:47 AM

May 17 2017

dsanders committed rL303259: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
[globalisel][tablegen] Import rules containing intrinsic_wo_chain.
May 17 2017, 6:53 AM
dsanders closed D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
May 17 2017, 6:53 AM
dsanders committed rL303253: [globalisel][tablegen] Require that all registers between instructions of a….
[globalisel][tablegen] Require that all registers between instructions of a…
May 17 2017, 5:56 AM
dsanders closed D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual..
May 17 2017, 5:56 AM
dsanders accepted D33224: [GISel]: Fix more Undefined behavior in GlobalISel::IRTranslator.

LGTM

May 17 2017, 2:55 AM

May 16 2017

dsanders accepted D33031: [GlobalISel][TableGen] Fix handling of default operands.

LGTM.

May 16 2017, 7:58 AM
dsanders added a comment to D33224: [GISel]: Fix more Undefined behavior in GlobalISel::IRTranslator.

Is it possible to add a test case for this? It seems that a test where the last instruction has a DILocation should trigger it.

May 16 2017, 4:13 AM

May 12 2017

dsanders accepted D33084: [GISel]: Fix undefined behavior while accessing DefaultAction map.

One nit: We could avoid introducing the Optional<> by testing for LLT.isValid() instead of testing for whether the Optional has a value

May 12 2017, 2:59 PM

May 11 2017

dsanders added a comment to D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual..

Hi Daniel,

We are talking pass each other :).

May 11 2017, 4:08 PM
dsanders added inline comments to D32868: [globalisel][tablegen] Fix nullptr dereferences when getVRegDef() is called on a phys reg..
May 11 2017, 3:25 PM
dsanders added inline comments to D33084: [GISel]: Fix undefined behavior while accessing DefaultAction map.
May 11 2017, 3:04 AM
dsanders accepted D33085: [GISel]:Remove unused Lambda capture. NFC.

LGTM

May 11 2017, 2:26 AM

May 10 2017

dsanders added inline comments to D33031: [GlobalISel][TableGen] Fix handling of default operands.
May 10 2017, 8:10 AM
dsanders added inline comments to D33031: [GlobalISel][TableGen] Fix handling of default operands.
May 10 2017, 7:18 AM
dsanders accepted D14390: [mips] Expansion of LI.S and LI.D.

I haven't looked too closely at the output of the macro since I don't know what it should be but it looks like the issues I raised earlier in the review are no longer there. I just have one nit about nextReg().

May 10 2017, 7:06 AM
dsanders added inline comments to D33031: [GlobalISel][TableGen] Fix handling of default operands.
May 10 2017, 2:16 AM
dsanders added inline comments to D33031: [GlobalISel][TableGen] Fix handling of default operands.
May 10 2017, 2:12 AM

May 9 2017

dsanders added a comment to D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual..

If that happens, doesn't that means we need to support it?

The way I was thinking about this was that we should be able to insert copy to vreg before and after to assign to and from the physical registers.

May 9 2017, 11:06 AM
dsanders added a comment to D32744: [globalisel] Improve legalizer DEBUG_ONLY output..

I believe PrintTo will be valid since it's occurs after the instruction we're working on. If we're folding multiple instructions into one we'll be following the operands backwards, away from PrintTo.

May 9 2017, 10:42 AM

May 4 2017

dsanders updated the diff for D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..

Hoist out the checks for intrinsic id's so that they are only importable when
found in the place we expect them to be.

May 4 2017, 10:09 AM
dsanders updated the diff for D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..

Refresh patch

May 4 2017, 10:03 AM
dsanders added a dependency for D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain.: D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual..
May 4 2017, 10:00 AM
dsanders added a dependent revision for D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual.: D32278: [globalisel][tablegen] Import rules containing intrinsic_wo_chain..
May 4 2017, 10:00 AM
dsanders added a dependency for D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual.: D32868: [globalisel][tablegen] Fix nullptr dereferences when getVRegDef() is called on a phys reg..
May 4 2017, 9:59 AM
dsanders added a dependent revision for D32868: [globalisel][tablegen] Fix nullptr dereferences when getVRegDef() is called on a phys reg.: D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual..
May 4 2017, 9:59 AM
dsanders created D32869: [globalisel][tablegen] Require that all registers between instructions of a match are virtual..
May 4 2017, 9:57 AM
dsanders created D32868: [globalisel][tablegen] Fix nullptr dereferences when getVRegDef() is called on a phys reg..
May 4 2017, 9:44 AM
dsanders committed rL302154: [globalisel][tablegen] Add several GINodeEquiv's for operators that do not….
[globalisel][tablegen] Add several GINodeEquiv's for operators that do not…
May 4 2017, 7:38 AM
dsanders closed D32275: [globalisel][tablegen] Add several GINodeEquiv's for operators that do not require additional support..
May 4 2017, 7:37 AM
dsanders created D32861: [globalisel][tablegen] Demote OptForSize/OptForMinSize/ForCodeSize to per-function predicates..
May 4 2017, 6:04 AM
dsanders added a comment to D32744: [globalisel] Improve legalizer DEBUG_ONLY output..

Just to clarify, this wouldn't work if the target decided to insert new instructions before PrevMII (or even at the beginning for e.g.). I'm guessing if the target does that, its not a big deal if we don't print it.

May 4 2017, 1:42 AM

May 3 2017

dsanders created D32791: [globalisel][tablegen] Add support for (set $dst, 1) and test X86's OptForSize predicate..
May 3 2017, 3:51 AM

May 2 2017

dsanders created D32746: [globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0..
May 2 2017, 6:27 AM
dsanders added inline comments to D32575: Don't try to legalize Intermediate instructions (with generic types).
May 2 2017, 5:19 AM
dsanders created D32744: [globalisel] Improve legalizer DEBUG_ONLY output..
May 2 2017, 5:19 AM
dsanders added inline comments to D32575: Don't try to legalize Intermediate instructions (with generic types).
May 2 2017, 3:58 AM
dsanders added a comment to D32677: [GlobalISel][X86] Prioritize Tablegen-erated instruction selection. NFC.

Thanks for doing this. It will allow me to add a test for the predicates related to the optsize attribute.

May 2 2017, 3:49 AM

Apr 29 2017

dsanders committed rL301756: [globalisel][tablegen] Fix the test after silencing the unused variable warning….
[globalisel][tablegen] Fix the test after silencing the unused variable warning…
Apr 29 2017, 12:59 PM
dsanders committed rL301755: [globalisel][tablegen] Silence unused variable warning..
[globalisel][tablegen] Silence unused variable warning.
Apr 29 2017, 12:23 PM
dsanders committed rL301750: [globalisel][tablegen] Compute available feature bits correctly..
[globalisel][tablegen] Compute available feature bits correctly.
Apr 29 2017, 10:43 AM
dsanders closed D32491: [globalisel][tablegen] Compute available feature bits correctly..
Apr 29 2017, 10:43 AM

Apr 28 2017

dsanders added inline comments to D32575: Don't try to legalize Intermediate instructions (with generic types).
Apr 28 2017, 3:59 PM
dsanders added a comment to D32491: [globalisel][tablegen] Compute available feature bits correctly..

I just checked and the existing ARM tests fail without this patch because the available features aren't reset when entering the functions. They work with this patch + enabling the TableGen selector for ARM, so we'll have tests then :)

Apr 28 2017, 8:37 AM
dsanders added a comment to D32491: [globalisel][tablegen] Compute available feature bits correctly..

In that case I'll commit the previous version of this patch tomorrow and post the immediate support for a separate review. The PR can then come out of that review. Thanks

Apr 28 2017, 8:02 AM
dsanders added inline comments to D32491: [globalisel][tablegen] Compute available feature bits correctly..
Apr 28 2017, 7:53 AM
dsanders updated the diff for D32491: [globalisel][tablegen] Compute available feature bits correctly..

Add support for patterns consisting solely of an IntInit* and use this to add a
test case to the rule predicate support... almost.

Apr 28 2017, 7:24 AM
dsanders added inline comments to D32575: Don't try to legalize Intermediate instructions (with generic types).
Apr 28 2017, 1:37 AM

Apr 27 2017

dsanders updated the diff for D32491: [globalisel][tablegen] Compute available feature bits correctly..

Moved ForCodeSize and similar to the Subtarget.

Apr 27 2017, 5:12 AM
dsanders added a comment to D32491: [globalisel][tablegen] Compute available feature bits correctly..

I'm having trouble improving the test case since the function-level predicates don't show up in any importable rules yet. I'll see if I can uncover one

Apr 27 2017, 5:11 AM

Apr 26 2017

dsanders accepted D32537: [globalisel][tablegen] Fix vector element size.

LGTM

Apr 26 2017, 8:14 AM
dsanders added a comment to D32491: [globalisel][tablegen] Compute available feature bits correctly..

So, we have a new GISelAccessor with a new InstructionSelector for each unique subtarget (module + function attributes, as hashed in getSubtargetImpl). Why do we need to have module features and function features in each InstructionSelector? Isn't there a different InstructionSelector for each kind of function, and don't we magically get the right one when processing each function? What am I missing? It seems to me that we could get away with a single set of availableFeatures per InstructionSelector.

Apr 26 2017, 4:43 AM

Apr 25 2017

dsanders created D32491: [globalisel][tablegen] Compute available feature bits correctly..
Apr 25 2017, 8:26 AM
dsanders committed rL301311: Bring back the ability opt out of padding zero-byte functions by not providing….
Bring back the ability opt out of padding zero-byte functions by not providing…
Apr 25 2017, 7:40 AM