Page MenuHomePhabricator
Feed Advanced Search

Today

aemerson committed rG56606a4db3e7: [AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT (authored by aemerson).
[AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT
Tue, Aug 20, 5:16 PM
aemerson committed rL369480: [AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT.
[AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT
Tue, Aug 20, 5:16 PM
aemerson closed D66181: [AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT.
Tue, Aug 20, 5:16 PM · Restricted Project
aemerson added inline comments to D64953: GlobalISel: Support physical register inputs in patterns.
Tue, Aug 20, 11:40 AM
aemerson added inline comments to D64953: GlobalISel: Support physical register inputs in patterns.
Tue, Aug 20, 11:26 AM
aemerson added a comment to D65413: GlobalISel: Implement moreElementsVector for G_UNMERGE_VALUES sources.

Test?

Tue, Aug 20, 11:17 AM
aemerson closed D66077: [GlobalISel] Handle multiple registers in dbg.value intrinsic.
Tue, Aug 20, 10:16 AM · Restricted Project

Yesterday

aemerson closed D65850: GlobalISel: pack various parameters for lowerCall into a struct..

Closing as committed.

Mon, Aug 19, 10:36 AM · Restricted Project
aemerson accepted D66077: [GlobalISel] Handle multiple registers in dbg.value intrinsic.

LGTM.

Mon, Aug 19, 10:36 AM · Restricted Project
aemerson added a comment to D66180: [GlobalISel][CallLowering] Add support for splitting types according to calling conventions.

I'm somewhat confused by what the responsibilities of handleAssignments are vs. target code. I already have multiple register breakdowns without this patch in AMDGPU

IIUC calling convention specified register splits should be generic, and it's handled in generic code by SelectionDAG. Whether handleAssignments is the best place for I'm not sure, but I don't think targets should have to deal with this individually. In arm64 I think we already have some target call lowering code that should really be generic.

Mon, Aug 19, 10:36 AM · Restricted Project

Fri, Aug 16

aemerson committed rG57ec292ab800: [AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128… (authored by aemerson).
[AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128…
Fri, Aug 16, 4:25 PM
aemerson committed rL369172: [AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128….
[AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128…
Fri, Aug 16, 4:23 PM
aemerson added a comment to D66338: [CGP] Drop no op intrinsic calls.

(As an alternative, this can be fixed in the phrase when llvm.assume is dropped in backend.. but not sure if we have "backend" version of RecursivelyDeleteTriviallyDeadInstructions)

When I originally looked at this, dropping the assume during SelectionDAG construction seemed sufficient to also drop side-effect-free instructions used only by the assume. Maybe this SDAG logic should be extended to drop readnone functions in the same way?

However, what I don't know is: In the context of GlobalISel (and maybe also FastISel) we really need to actively deal with this in some other way (e.g., like this)? Thoughts?

For GlobalISel side effect free dead instructions will be deleted at various points in the pipeline. However, calls won't be. I don't think clang should be allowing this at all though. It should be perfectly legal to drop an llvm.assume without having to deal with dead defs.

Fri, Aug 16, 12:19 PM · Restricted Project
aemerson committed rGc809230a6927: [AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt mask. (authored by aemerson).
[AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt mask.
Fri, Aug 16, 11:09 AM
aemerson committed rL369135: [AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt mask..
[AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt mask.
Fri, Aug 16, 11:09 AM

Wed, Aug 14

aemerson committed rG1222cfd5fee3: [AArch64][GlobalISel] Custom selection for s8 load acquire. (authored by aemerson).
[AArch64][GlobalISel] Custom selection for s8 load acquire.
Wed, Aug 14, 2:36 PM
aemerson committed rL368923: [AArch64][GlobalISel] Custom selection for s8 load acquire..
[AArch64][GlobalISel] Custom selection for s8 load acquire.
Wed, Aug 14, 2:32 PM
aemerson closed D66245: [AArch64][GlobalISel] Custom selection for s8 load acquire.
Wed, Aug 14, 2:32 PM · Restricted Project
aemerson created D66245: [AArch64][GlobalISel] Custom selection for s8 load acquire.
Wed, Aug 14, 12:58 PM · Restricted Project
aemerson added inline comments to D66077: [GlobalISel] Handle multiple registers in dbg.value intrinsic.
Wed, Aug 14, 10:43 AM · Restricted Project

Tue, Aug 13

aemerson updated the diff for D66181: [AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT.

Add support for any multiple of the narrow type.

Tue, Aug 13, 7:12 PM · Restricted Project
aemerson committed rG2a312fc9899b: [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging. (authored by aemerson).
[AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging.
Tue, Aug 13, 4:53 PM
aemerson committed rL368775: [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging..
[AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging.
Tue, Aug 13, 4:53 PM
aemerson closed D66184: [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging.
Tue, Aug 13, 4:53 PM · Restricted Project
aemerson updated the diff for D66185: [AArch64][GlobalISel] Legalize 128 bit divisions to libcalls.

Fix assertion expression.

Tue, Aug 13, 4:26 PM · Restricted Project
aemerson added parent revisions for D66185: [AArch64][GlobalISel] Legalize 128 bit divisions to libcalls: D66184: [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging, D66180: [GlobalISel][CallLowering] Add support for splitting types according to calling conventions.
Tue, Aug 13, 4:01 PM · Restricted Project
aemerson added a child revision for D66184: [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging: D66185: [AArch64][GlobalISel] Legalize 128 bit divisions to libcalls.
Tue, Aug 13, 4:01 PM · Restricted Project
aemerson added a child revision for D66180: [GlobalISel][CallLowering] Add support for splitting types according to calling conventions: D66185: [AArch64][GlobalISel] Legalize 128 bit divisions to libcalls.
Tue, Aug 13, 4:01 PM · Restricted Project
aemerson created D66185: [AArch64][GlobalISel] Legalize 128 bit divisions to libcalls.
Tue, Aug 13, 3:52 PM · Restricted Project
aemerson created D66184: [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging.
Tue, Aug 13, 3:52 PM · Restricted Project
aemerson created D66181: [AArch64][GlobalISel] Add support for narrowScalar of G_ZEXT.
Tue, Aug 13, 3:43 PM · Restricted Project
aemerson created D66180: [GlobalISel][CallLowering] Add support for splitting types according to calling conventions.
Tue, Aug 13, 3:40 PM · Restricted Project
aemerson accepted D66162: [AArch64][GlobalISel] Select logical_imm32 and logical_imm64 patterns.

LGTM.

Tue, Aug 13, 3:04 PM · Restricted Project
aemerson accepted D66163: [AArch64][GlobalISel] Select patterns which use shifted register operands.

LGTM.

Tue, Aug 13, 3:04 PM · Restricted Project
aemerson added a comment to D66171: [GlobalISel]: Fix lowering of G_SHUFFLE_VECTOR with scalar sources.

LGTM, although I rather dislike that we allow these. Maybe the IRTranslator should be trying to turn these into the equivalent G_BUILD_VECTOR?

Tue, Aug 13, 2:51 PM · Restricted Project
aemerson added inline comments to D66163: [AArch64][GlobalISel] Select patterns which use shifted register operands.
Tue, Aug 13, 2:25 PM · Restricted Project

Mon, Aug 12

aemerson committed rG72c81b94cb3a: [AArch64][GlobalISel] Replace explicit vreg creation with implicit using SrcOp. (authored by aemerson).
[AArch64][GlobalISel] Replace explicit vreg creation with implicit using SrcOp.
Mon, Aug 12, 11:56 PM
aemerson committed rL368653: [AArch64][GlobalISel] Replace explicit vreg creation with implicit using SrcOp..
[AArch64][GlobalISel] Replace explicit vreg creation with implicit using SrcOp.
Mon, Aug 12, 11:56 PM
aemerson accepted D61290: globalisel][aarch64] Make G_SEXT_INREG legal from all bit sizes to s32/s64.

LGTM.

Mon, Aug 12, 11:34 PM · Restricted Project
aemerson committed rGe14c91b71aed: [GlobalISel] Make the InstructionSelector instance non-const, allowing state to… (authored by aemerson).
[GlobalISel] Make the InstructionSelector instance non-const, allowing state to…
Mon, Aug 12, 11:27 PM
aemerson accepted D66109: GlobalISel: Change representation of shuffle masks.

This looks reasonable to me. Thanks.

Mon, Aug 12, 11:26 PM
aemerson committed rL368652: [GlobalISel] Make the InstructionSelector instance non-const, allowing state to….
[GlobalISel] Make the InstructionSelector instance non-const, allowing state to…
Mon, Aug 12, 11:26 PM
aemerson closed D65984: [GlobalISel] Make the InstructionSelector instance non-const, allowing state to be maintained..
Mon, Aug 12, 11:26 PM · Restricted Project
aemerson added inline comments to D65984: [GlobalISel] Make the InstructionSelector instance non-const, allowing state to be maintained..
Mon, Aug 12, 6:12 PM · Restricted Project

Fri, Aug 9

aemerson added a comment to D65962: Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM.

LGTM for the AArch64 changes.

Fri, Aug 9, 4:28 PM · Restricted Project

Thu, Aug 8

aemerson created D65984: [GlobalISel] Make the InstructionSelector instance non-const, allowing state to be maintained..
Thu, Aug 8, 4:27 PM · Restricted Project

Wed, Aug 7

aemerson accepted D65850: GlobalISel: pack various parameters for lowerCall into a struct..

LGTM

Wed, Aug 7, 8:35 PM · Restricted Project

Mon, Aug 5

aemerson committed rGbc1172df149a: [GlobalISel][CallLowering] Rename isArgumentHandler() ->… (authored by aemerson).
[GlobalISel][CallLowering] Rename isArgumentHandler() ->…
Mon, Aug 5, 4:06 PM
aemerson committed rL367945: [GlobalISel][CallLowering] Rename isArgumentHandler() ->….
[GlobalISel][CallLowering] Rename isArgumentHandler() ->…
Mon, Aug 5, 4:06 PM
aemerson committed rG85e5e28ab4c8: [AArch64][GlobalISel] Inline tiny memcpy et al at -O0. (authored by aemerson).
[AArch64][GlobalISel] Inline tiny memcpy et al at -O0.
Mon, Aug 5, 1:04 PM
aemerson committed rL367919: [AArch64][GlobalISel] Inline tiny memcpy et al at -O0..
[AArch64][GlobalISel] Inline tiny memcpy et al at -O0.
Mon, Aug 5, 1:02 PM
aemerson closed D65758: [AArch64][GlobalISel] Inline tiny memcpy et al at -O0.
Mon, Aug 5, 1:02 PM · Restricted Project
aemerson added inline comments to D61289: [globalisel] Add G_SEXT_INREG.
Mon, Aug 5, 10:39 AM · Restricted Project
aemerson created D65758: [AArch64][GlobalISel] Inline tiny memcpy et al at -O0.
Mon, Aug 5, 10:10 AM · Restricted Project

Fri, Aug 2

aemerson added inline comments to D65656: AArch64: support @llvm.{return,frame}address in GlobalISel.
Fri, Aug 2, 10:31 PM · Restricted Project
aemerson committed rGc835164a47e5: Re-commit "[GlobalISel] Add legalization support for non-power-2 loads and… (authored by aemerson).
Re-commit "[GlobalISel] Add legalization support for non-power-2 loads and…
Fri, Aug 2, 4:46 PM
aemerson committed rL367739: Re-commit "[GlobalISel] Add legalization support for non-power-2 loads and….
Re-commit "[GlobalISel] Add legalization support for non-power-2 loads and…
Fri, Aug 2, 4:45 PM
aemerson committed rG52e6d52f10dc: [GlobalISel] Check LLT size matches memory size for non-truncating stores. (authored by aemerson).
[GlobalISel] Check LLT size matches memory size for non-truncating stores.
Fri, Aug 2, 4:35 PM
aemerson committed rL367737: [GlobalISel] Check LLT size matches memory size for non-truncating stores..
[GlobalISel] Check LLT size matches memory size for non-truncating stores.
Fri, Aug 2, 4:32 PM
aemerson closed D64845: [GlobalISel] Check LLT size matches memory size for non-truncating stores..
Fri, Aug 2, 4:32 PM · Restricted Project
aemerson added a comment to D64845: [GlobalISel] Check LLT size matches memory size for non-truncating stores..

That change LGTM. Do you have a test case for your target?

Fri, Aug 2, 4:19 PM · Restricted Project
aemerson updated the diff for D64845: [GlobalISel] Check LLT size matches memory size for non-truncating stores..

Use isNonTruncStore() instead.

Fri, Aug 2, 3:44 PM · Restricted Project
aemerson committed rG73752abeab1a: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly… (authored by aemerson).
[AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly…
Fri, Aug 2, 2:16 PM
aemerson committed rL367723: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly….
[AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly…
Fri, Aug 2, 2:16 PM
aemerson closed D65360: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly zext-loaded.
Fri, Aug 2, 2:16 PM · Restricted Project
aemerson added inline comments to D65656: AArch64: support @llvm.{return,frame}address in GlobalISel.
Fri, Aug 2, 10:55 AM · Restricted Project
aemerson accepted D65656: AArch64: support @llvm.{return,frame}address in GlobalISel.

LGTM with test nit.

Fri, Aug 2, 10:51 AM · Restricted Project
aemerson accepted D65460: [AArch64][GlobalISel] Support the neg_addsub_shifted_imm32 pattern.

LGTM.

Fri, Aug 2, 9:46 AM · Restricted Project

Tue, Jul 30

aemerson added a comment to D65360: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly zext-loaded.

I am a little concerned that continuing down this route is going to result in a bunch of work that every target will have to duplicate. I think it makes sense to come up with a plan to prevent that if possible.

For now, though, I feel like we don't really know how many things like this show up/how they show up. So, I don't know if it makes sense to run the combiner twice at -O0/add another more minimal pass/etc. yet.

(Do we know what the compile time/code size tradeoff of running the combiner twice is for -O0?)

Tue, Jul 30, 5:10 PM · Restricted Project
aemerson accepted D65021: TableGen: Add MinAlignment predicate.

Looks reasonable to me.

Tue, Jul 30, 3:08 PM

Sun, Jul 28

aemerson added a comment to D65360: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly zext-loaded.

Shouldn’t the combiner have already gotten his?

It does catch these cases, but sometimes these patterns arise later after the combiner due to some other optimization or DCE. By then the combiner has already run so we don’t merge these into G_ZEXTLOAD.

I kind of think this is an issue of not running another combiner round, and the selector should do minimal work

Sun, Jul 28, 3:27 PM · Restricted Project

Fri, Jul 26

aemerson added a comment to D65360: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly zext-loaded.

Shouldn’t the combiner have already gotten his?

It does catch these cases, but sometimes these patterns arise later after the combiner due to some other optimization or DCE. By then the combiner has already run so we don’t merge these into G_ZEXTLOAD.

Fri, Jul 26, 7:54 PM · Restricted Project
aemerson created D65360: [AArch64][GlobalISel] Eliminate redundant G_ZEXT when the source is implicitly zext-loaded.
Fri, Jul 26, 6:08 PM · Restricted Project
aemerson committed rG7bc4fad0fbee: [AArch64][GlobalISel] Implement narrowing of G_SEXT. (authored by aemerson).
[AArch64][GlobalISel] Implement narrowing of G_SEXT.
Fri, Jul 26, 4:49 PM
aemerson added a comment to rL367075: [AArch64][GlobalISel] Simplify zext/sext selection, use MachineIRBuilder. NFC..

Thanks for reporting this, looks like our recent enabling of s128 types caused the assert to trigger now, but the sext is trying to extend from the wrong reg bank. I've fixed it in r367164.

Fri, Jul 26, 4:49 PM
aemerson committed rL367164: [AArch64][GlobalISel] Implement narrowing of G_SEXT..
[AArch64][GlobalISel] Implement narrowing of G_SEXT.
Fri, Jul 26, 4:46 PM
aemerson closed D65357: [AArch64][GlobalISel] Implement narrowing of G_SEXT..
Fri, Jul 26, 4:46 PM · Restricted Project
aemerson created D65357: [AArch64][GlobalISel] Implement narrowing of G_SEXT..
Fri, Jul 26, 4:24 PM · Restricted Project
aemerson accepted D65355: [AArch64][GlobalISel] Select @llvm.aarch64.stlxr for 32-bit pointers.

LGTM.

Fri, Jul 26, 4:20 PM · Restricted Project

Thu, Jul 25

aemerson committed rGc07fe307b48a: [AArch64][GlobalISel] Simplify zext/sext selection, use MachineIRBuilder. NFC. (authored by aemerson).
[AArch64][GlobalISel] Simplify zext/sext selection, use MachineIRBuilder. NFC.
Thu, Jul 25, 5:03 PM
aemerson committed rL367075: [AArch64][GlobalISel] Simplify zext/sext selection, use MachineIRBuilder. NFC..
[AArch64][GlobalISel] Simplify zext/sext selection, use MachineIRBuilder. NFC.
Thu, Jul 25, 5:03 PM
aemerson committed rGe54dc6b8b58d: [AArch64][GlobalISel] Fix G_SELECT legalization fallback after r366943. (authored by aemerson).
[AArch64][GlobalISel] Fix G_SELECT legalization fallback after r366943.
Thu, Jul 25, 2:46 PM
aemerson added a comment to rL366943: [AArch64][GlobalISel] Fix a crash during s128 G_ICMP legalization due to….

I thought about this but G_SELECT for aarch64 is only legal for s1 type1 (the condition).
That is why I used s1 for condition in G_SELECT since it is default type and backends can deal with it. maxScalar(1, s1) or D65079 could fix this.

Thu, Jul 25, 2:45 PM
aemerson committed rL367060: [AArch64][GlobalISel] Fix G_SELECT legalization fallback after r366943..
[AArch64][GlobalISel] Fix G_SELECT legalization fallback after r366943.
Thu, Jul 25, 2:44 PM

Wed, Jul 24

aemerson committed rGde81bd0faa54: [AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon or… (authored by aemerson).
[AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon or…
Wed, Jul 24, 4:01 PM
aemerson added a comment to D65166: [AArch64][GlobalISel] Add support for s128 loads, stores, extracts, truncs..

We're seeing the following error in our build which appears to have been introduced by this change:

fatal error: error in backend: Attempting to emit INSvi64gpr instruction but the Feature_HasNEON predicate(s) are not met

I've filed a bug PR42734 which also contains the reproducer.

Wed, Jul 24, 4:01 PM · Restricted Project
aemerson committed rL366957: [AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon or….
[AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon or…
Wed, Jul 24, 4:00 PM
aemerson closed D65244: [AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon or fp..
Wed, Jul 24, 4:00 PM · Restricted Project
aemerson accepted D65248: [AArch64][GlobalISel] Select immediate modes for ADD when selecting G_GEP.

Can you add a constant out of range immediate test too? LGTM otherwise.

Wed, Jul 24, 3:59 PM · Restricted Project
aemerson added a comment to D61787: [GlobalISel Legalizer] Improve artifact combiner.

I'm trying to figure out whats' going on with this discussion. One thing I didn't quite see a response to (apologies if you answered it and I missed it) is that why is this the case:

But in LegalizerInfo it says that G_MERGE is legal for {s128, s32} despite the fact that we cannot select it. Why? Because that is how current Artifact combiner works.

Wed, Jul 24, 3:42 PM · Restricted Project
Herald added a project to D44704: [GlobalISel][X86][ARM] Relaxing type constraints on G_SHL and friends: Restricted Project.

This is already done in another patch. Abandon?

Wed, Jul 24, 3:24 PM · Restricted Project
aemerson committed rG13af1ed8e37c: [GlobalISel] Support for inlining memcpy, memset and memmove calls. (authored by aemerson).
[GlobalISel] Support for inlining memcpy, memset and memmove calls.
Wed, Jul 24, 3:20 PM
aemerson committed rL366951: [GlobalISel] Support for inlining memcpy, memset and memmove calls..
[GlobalISel] Support for inlining memcpy, memset and memmove calls.
Wed, Jul 24, 3:20 PM
aemerson closed D65167: [GlobalISel] Support for inlining memcpy, memset and memmove calls.
Wed, Jul 24, 3:19 PM · Restricted Project
aemerson added inline comments to D65167: [GlobalISel] Support for inlining memcpy, memset and memmove calls.
Wed, Jul 24, 3:02 PM · Restricted Project
aemerson accepted D65173: [AArch64][GlobalISel] Fold G_MUL into XRO load addressing mode when possible.

LGTM.

Wed, Jul 24, 2:58 PM · Restricted Project
aemerson created D65244: [AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon or fp..
Wed, Jul 24, 2:52 PM · Restricted Project
aemerson committed rGa1997ce2e51d: [AArch64][GlobalISel] Fix a crash during s128 G_ICMP legalization due to… (authored by aemerson).
[AArch64][GlobalISel] Fix a crash during s128 G_ICMP legalization due to…
Wed, Jul 24, 1:47 PM
aemerson requested changes to D65079: [GlobalISel][AArch64] Fix narrowScalar for G_ICMP.

I don't believe this is the right fix as the legalizer shouldn't really be hard coding the type of G_SELECT operands there. I fixed it by using the existing type of the G_ICMP in r366943.

Wed, Jul 24, 1:47 PM · Restricted Project
aemerson committed rL366943: [AArch64][GlobalISel] Fix a crash during s128 G_ICMP legalization due to….
[AArch64][GlobalISel] Fix a crash during s128 G_ICMP legalization due to…
Wed, Jul 24, 1:46 PM