Page MenuHomePhabricator

craig.topper (Craig Topper)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 30 2013, 7:58 PM (285 w, 4 d)

Recent Activity

Yesterday

craig.topper created D56971: [X86] Add DAG combine to merge vzext_movl with the various fp<->int conversion operations that only write the lower 64-bits of an xmm register and zero the rest..
Sat, Jan 19, 7:55 PM
craig.topper added a comment to D56965: [X86] Remove the cvtuqq2ps256/cvtqq2ps256 mask builtins. Replace with uitofp/sitofp and select..

It uses current rounding mode for inexact conversions. cvtsi642ss should do the same. As does (u)dq2ps and (u)qq2pd. I think we use sitofp/uitofp for some lengths of those already.

Sat, Jan 19, 2:29 PM
craig.topper created D56965: [X86] Remove the cvtuqq2ps256/cvtqq2ps256 mask builtins. Replace with uitofp/sitofp and select..
Sat, Jan 19, 11:47 AM

Fri, Jan 18

craig.topper added inline comments to D56950: [docs] Prevent O0 optnone for opt input.
Fri, Jan 18, 5:51 PM
craig.topper added inline comments to D56950: [docs] Prevent O0 optnone for opt input.
Fri, Jan 18, 5:25 PM
craig.topper accepted D56883: [X86] Deduplicate static calling convention helpers for code size, NFC.

LGTM

Fri, Jan 18, 4:24 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Hopefully fix https://github.com/ClangBuiltLinux/linux/issues/320#issuecomment-455435791. Had to exclude CallBr predecessors in JumpThreading.

Fri, Jan 18, 1:17 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Fix most of my own review comments. Fix what was probably a bug in SimplifyCFG.

Fri, Jan 18, 11:54 AM

Thu, Jan 17

craig.topper added a comment to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

This looks like a codegen bug, from compiling more of the Linux kernel. It seems that an optimization from -O1 is causing the problem: https://github.com/ClangBuiltLinux/linux/issues/320#issuecomment-455435791. I'm not sure how to help narrow it down further (which pass?). The output is from creduce and I've narrowed down the set of flags to Clang.

Thu, Jan 17, 11:30 PM
craig.topper updated the diff for D56827: [X86] Lower avx2/avx512f gather intrinsics to X86MaskedGatherSDNode instead of going directly to MachineSDNode..

Update to include tests

Thu, Jan 17, 10:21 PM
craig.topper added inline comments to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Thu, Jan 17, 8:52 PM
craig.topper added a comment to D56867: [ValueTracking] Early out of isValidAssumeForContext if the assume and the context instruction are the same.

If we return false like we currently do via the loop. Then I don't think it can be tested since its really just making explicit what was previously an odd iteration behavior. If we change it to true then maybe that would be a behavior change we could see.

Thu, Jan 17, 2:33 PM
craig.topper updated the diff for D56867: [ValueTracking] Early out of isValidAssumeForContext if the assume and the context instruction are the same.

With context

Thu, Jan 17, 2:29 PM
craig.topper created D56867: [ValueTracking] Early out of isValidAssumeForContext if the assume and the context instruction are the same.
Thu, Jan 17, 11:10 AM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Add CallBr to isSafeToSpeculativelyExecute to keep isValidAssumeForContext from walking off the end of the basic block.

Thu, Jan 17, 10:40 AM

Wed, Jan 16

craig.topper created D56827: [X86] Lower avx2/avx512f gather intrinsics to X86MaskedGatherSDNode instead of going directly to MachineSDNode..
Wed, Jan 16, 11:59 PM
craig.topper added a comment to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Wed, Jan 16, 9:57 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Fix LangRef typos

Wed, Jan 16, 5:14 PM
craig.topper added inline comments to D56819: Document toolchain update policy.
Wed, Jan 16, 4:22 PM
craig.topper added inline comments to D56819: Document toolchain update policy.
Wed, Jan 16, 4:01 PM
craig.topper added a comment to D56695: [X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv.

Merge request r40343

Wed, Jan 16, 1:52 PM
craig.topper added a comment to D56082: [X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub).

There are a lot of test changes here that have nothing to do with the add/sub operations mentioned in the title. How do we know these changes are good? Was any benchmarking done with this patch?

Wed, Jan 16, 10:43 AM
craig.topper updated the diff for D56771: [X86] Use X86ISD::BLENDV for blendv intrinsics. Replace vselect with blendv just before isel table lookup. Remove vselect isel patterns..

Add assert for SSE4.1

Wed, Jan 16, 10:39 AM

Tue, Jan 15

craig.topper created D56771: [X86] Use X86ISD::BLENDV for blendv intrinsics. Replace vselect with blendv just before isel table lookup. Remove vselect isel patterns..
Tue, Jan 15, 11:55 PM
craig.topper created D56765: [X86] Add a one use check to the setcc inversion code in combineVSelectWithAllOnesOrZeros.
Tue, Jan 15, 5:23 PM
craig.topper added inline comments to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Tue, Jan 15, 4:27 PM
craig.topper added reviewers for D55877: [LIR] Add CTTZ support part2: hfinkel, rengolin, chandlerc.
Tue, Jan 15, 2:52 PM
craig.topper added inline comments to D55877: [LIR] Add CTTZ support part2.
Tue, Jan 15, 2:52 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Add some documentation to the LangRef. Probably needs additional work.

Tue, Jan 15, 2:25 PM
craig.topper updated the diff for D56695: [X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv.

Move patterns into avx2_var_shift. Add multiclass in AVX512 to wrap the vector 3 vector lengths.

Tue, Jan 15, 12:49 PM
craig.topper updated the diff for D56695: [X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv.

Rebase tests.

Tue, Jan 15, 12:25 PM
craig.topper commandeered D56695: [X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv.

Commandeering so I can rebase the tests in the interest of getting this through review quicker.

Tue, Jan 15, 12:22 PM
craig.topper accepted D56052: X86DAGToDAGISel::matchBitExtract() with truncation (PR36419).

LGTM

Tue, Jan 15, 11:46 AM
craig.topper added inline comments to D56052: X86DAGToDAGISel::matchBitExtract() with truncation (PR36419).
Tue, Jan 15, 11:31 AM
craig.topper added a comment to D56527: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar.

Yeah that’s the issue. The software interface for the intrinsics passes base, index, and scale separately. The generic intrinsics expect a GEP they can extract the info from. I suppose with the right casting we could form a GEP, but that seems ugly.

Tue, Jan 15, 8:46 AM

Mon, Jan 14

craig.topper added a comment to D56695: [X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv.

I've committed the tests along with some formatting fixes, removal of unused operands, and a fix to minimize the diffs in avx-intrinsics-x86.ll. Can you rebase this patch and regenerate the test checks?

Mon, Jan 14, 11:19 PM
craig.topper added reviewers for D56695: [X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv: spatel, RKSimon.
Mon, Jan 14, 7:04 PM
craig.topper created D56691: [Nios2] Remove Nios2 backend.
Mon, Jan 14, 5:24 PM
craig.topper created D56690: [Nios2] Remove Nios2 backend.
Mon, Jan 14, 5:21 PM
craig.topper added inline comments to D56686: [X86] Make _xgetbv/_xsetbv on non-windows platforms.
Mon, Jan 14, 5:06 PM
craig.topper updated the diff for D56686: [X86] Make _xgetbv/_xsetbv on non-windows platforms.

Remove guard from include of xsaveintrin.h. We can't have any check because we need it to always include on non-windows platforms due to target attribute.

Mon, Jan 14, 5:05 PM
craig.topper added a comment to D56178: [Nios2] Update overrides to new virtual method signatures.

On second thought. I'm proposing we just nuke this backend all together.

Mon, Jan 14, 5:05 PM
craig.topper created D56686: [X86] Make _xgetbv/_xsetbv on non-windows platforms.
Mon, Jan 14, 3:58 PM
craig.topper added a comment to D56178: [Nios2] Update overrides to new virtual method signatures.

Do you need me to commit this?

Mon, Jan 14, 2:45 PM
craig.topper added inline comments to D56052: X86DAGToDAGISel::matchBitExtract() with truncation (PR36419).
Mon, Jan 14, 2:12 PM
craig.topper added inline comments to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Mon, Jan 14, 1:05 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Address some review comments. Include context this time

Mon, Jan 14, 10:52 AM
craig.topper added inline comments to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Mon, Jan 14, 10:51 AM
craig.topper retitled D56571: [RFC prototype] Implementation of asm-goto support in clang from [RFC prototype] Implementation of asm-goto support in LLVM to [RFC prototype] Implementation of asm-goto support in clang.
Mon, Jan 14, 10:13 AM

Sat, Jan 12

craig.topper updated the diff for D56527: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar.

Fix accidental renaming of the tests that prevented the script from working

Sat, Jan 12, 4:03 PM
craig.topper updated the diff for D56527: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar.

Add back the check lines. Make a copy of the test for the old intrinsics.

Sat, Jan 12, 4:01 PM
craig.topper added a comment to D56527: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar.

Oops that was a mistake. I meant to regenerate after using the autoupgrade code to get the new IR out of opt.

Sat, Jan 12, 2:22 PM
craig.topper accepted D56544: [X86][AARCH64] Improve ISD::ABS support.

LGTM

Sat, Jan 12, 12:03 AM

Fri, Jan 11

craig.topper added inline comments to D56544: [X86][AARCH64] Improve ISD::ABS support.
Fri, Jan 11, 1:33 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Attempt to fix a bug reported by @nickdesaulniers . We weren't using the label created for the blockaddress of the basic block when we printed the inline assembly block. So there was no guarantee the label we were using wouldn't be removed. To fix this I've kept the blockaddress object in the SelectionDAG instead of stripping it in the builder. I've created it directly as TargetBlockAddress to hide it from isel. Then in the printer I look for the operand being a blockaddress and grab the symbol for it. I had to make a few checks for TargetBlockAddress in other places to make this work. I admit I have no idea if this is the right thing to do at all, and open to any input on this.

Fri, Jan 11, 11:42 AM

Thu, Jan 10

craig.topper added inline comments to D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Thu, Jan 10, 6:24 PM
craig.topper created D56571: [RFC prototype] Implementation of asm-goto support in clang.
Thu, Jan 10, 5:27 PM
craig.topper updated the diff for D53765: [RFC prototype] Implementation of asm-goto support in LLVM.

Rebased on top of CallBase. This builds and passes lit tests.

Thu, Jan 10, 4:35 PM
craig.topper commandeered D53765: [RFC prototype] Implementation of asm-goto support in LLVM.
Thu, Jan 10, 4:31 PM
craig.topper added a comment to D56270: [DAGCombiner] Allow target to control combine with illegal types..

How do you get your target to be able to type legalize an abs of any type? The interface for enabling custom legalization requires calling setOperation with a specific type does it not?

Thu, Jan 10, 4:47 AM

Wed, Jan 9

craig.topper added inline comments to D56506: [X86][SSE] Allow SplitOpsAndApply to split to lowest common vector size.
Wed, Jan 9, 7:50 PM
craig.topper added inline comments to D56530: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar (clang side).
Wed, Jan 9, 6:34 PM
craig.topper created D56530: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar (clang side).
Wed, Jan 9, 6:34 PM
craig.topper updated subscribers of D56529: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar (clang side).
Wed, Jan 9, 6:33 PM
craig.topper abandoned D56529: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar (clang side).

Abandoning because i sent it to llvm-commits instead of cfe-commits. Will redo to get the right mailing list

Wed, Jan 9, 6:33 PM
craig.topper added inline comments to D56529: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar (clang side).
Wed, Jan 9, 6:33 PM
craig.topper created D56529: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar (clang side).
Wed, Jan 9, 6:30 PM
craig.topper created D56527: [X86] Add versions of the avx512 gather intrinsics that take the mask as a vXi1 vector instead of a scalar.
Wed, Jan 9, 6:29 PM
craig.topper updated the diff for D56421: [X86] Call SimplifyDemandedBits on conditions of X86ISD::SHRUNKBLEND.

Reuse combineVSelectToShrunkBlend. This reduces the code and should allow better optimization when the select condition is used by multiple selects.

Wed, Jan 9, 2:12 PM
craig.topper added a comment to D56309: [X86] Simplify the BRCOND handling for FCMP_UNE..

Ping

Wed, Jan 9, 1:48 PM
craig.topper updated the diff for D56460: [X86] Disable DomainReassignment pass when AVX512BW is disabled to avoid injecting VK32/VK64 references into the MachineIR.

With context

Wed, Jan 9, 1:34 PM
craig.topper added a comment to D56506: [X86][SSE] Allow SplitOpsAndApply to split to lowest common vector size.

PMULDQ/PMULUDQ is interacting poorly with the fact that we convert zext/sext to zext_vector_inreg/sext_vector_inreg before type legalization. So we split the PMULDQ/PMULUDQ when we create them. Then SimplfiyDemandedbits can't optimize the zext/sext to aext because the splitting messed up the use count. Then the zext/sext becomes a split zext_invec/sext_invec, but SimplifyDemandedBit won't turn those into aext_invec. So its really a gross ordering problem that probably goes away with -x86-experimental-vector-widening-legalization since we won't eagerly create zext_invec/sext_invec ops.

Wed, Jan 9, 1:01 PM
craig.topper added a comment to D56270: [DAGCombiner] Allow target to control combine with illegal types..

There is this patch that was trying to make ABS more available D50239

Wed, Jan 9, 8:17 AM
craig.topper added a comment to D56270: [DAGCombiner] Allow target to control combine with illegal types..

Do you do custom type legalization for ABS in your target? There's no support for legalizing it in the target type independent legalizer.

Wed, Jan 9, 8:12 AM

Tue, Jan 8

craig.topper updated the summary of D56460: [X86] Disable DomainReassignment pass when AVX512BW is disabled to avoid injecting VK32/VK64 references into the MachineIR.
Tue, Jan 8, 5:02 PM
craig.topper created D56460: [X86] Disable DomainReassignment pass when AVX512BW is disabled to avoid injecting VK32/VK64 references into the MachineIR.
Tue, Jan 8, 3:59 PM
craig.topper added a comment to D56421: [X86] Call SimplifyDemandedBits on conditions of X86ISD::SHRUNKBLEND.

Also, should we remove the similar SimplifyDemandedBits call in combineVSelectToShrunkBlend?

Tue, Jan 8, 10:13 AM

Mon, Jan 7

craig.topper added a comment to D56406: Remove check for single use in ShrinkDemandedConstant.

Doesn't SimplifyDemandedBits already call ShrinkDemandedConstant for AND/OR/XOR? And without an override of targetShrinkDemandedConstant, ShrinkDemandedConstant only works on those 3 nodes. So is an explicit call to ShrinkDemandedConstant even needed here?

Mon, Jan 7, 11:35 PM
craig.topper added a comment to D56428: [SelectionDAGBuilder] Respect getBooleanContents in copies to VRegs.

Is the zext/cmp optimization in WebAssemblyFastISel::zeroExtendToI32 really valid? Do other targets do that?

Mon, Jan 7, 10:31 PM
craig.topper added inline comments to D55877: [LIR] Add CTTZ support part2.
Mon, Jan 7, 5:22 PM
craig.topper added inline comments to D56387: [DAGCombiner] Enable SimplifyDemandedBits vector support for TRUNCATE (WIP).
Mon, Jan 7, 5:00 PM
craig.topper created D56421: [X86] Call SimplifyDemandedBits on conditions of X86ISD::SHRUNKBLEND.
Mon, Jan 7, 5:00 PM
craig.topper added inline comments to D56387: [DAGCombiner] Enable SimplifyDemandedBits vector support for TRUNCATE (WIP).
Mon, Jan 7, 4:33 PM
craig.topper added a comment to D53554: [Argument Promotion] Only promote args when function attributes are compatible.

Gentle ping. Any chance this is going to get fixed before 8.0 branches?

Mon, Jan 7, 1:50 PM
craig.topper updated the diff for D56365: [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins..

Rebase after fixing immediates to be in range without a modulo

Mon, Jan 7, 12:14 AM
craig.topper created D56377: [X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with target independent funnel shift intrinsics..
Mon, Jan 7, 12:13 AM

Sun, Jan 6

craig.topper retitled D56365: [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins. from [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd intrinsics. to [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins..
Sun, Jan 6, 11:10 PM
craig.topper updated subscribers of D56365: [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins..
Sun, Jan 6, 11:10 PM
craig.topper updated the diff for D56365: [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins..

Add select checks. Move masking for variable vpshld/vpshrd to the intrinsic header. So now we don't need different builtins for mask and maskz.

Sun, Jan 6, 6:50 PM
craig.topper created D56365: [X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins..
Sun, Jan 6, 12:39 PM
craig.topper created D56361: [X86] Add support for matching vector funnel shift to AVX512VBMI2 instructions..
Sun, Jan 6, 12:33 AM

Thu, Jan 3

craig.topper created D56309: [X86] Simplify the BRCOND handling for FCMP_UNE..
Thu, Jan 3, 11:49 PM
craig.topper created D56306: [X86] Create PMULDQ/PMULUDQ even when the type is illegal. Teach type legalization to split it..
Thu, Jan 3, 9:54 PM
craig.topper added a comment to D55115: [IR] Don't assume all functions are 4 byte aligned.

@rupprecht, does it look related to the memptr.isvirtual bit that C++ member function pointers use?

Thu, Jan 3, 5:14 PM
craig.topper accepted D56178: [Nios2] Update overrides to new virtual method signatures.

LGTM

Thu, Jan 3, 4:32 PM
craig.topper updated the diff for D56283: [X86] Add INSERT_SUBVECTOR to ComputeNumSignBits.

Address review comments. Add test case.

Thu, Jan 3, 2:46 PM
craig.topper added inline comments to D56283: [X86] Add INSERT_SUBVECTOR to ComputeNumSignBits.
Thu, Jan 3, 2:45 PM
craig.topper created D56283: [X86] Add INSERT_SUBVECTOR to ComputeNumSignBits.
Thu, Jan 3, 11:27 AM

Wed, Jan 2

craig.topper added a comment to D31724: [SelectionDAG] Remove special call to LHS computeKnownBits for ANDs with constant RHS..

It's producing more test changes now on X86 and other targets. It's producing several regressions in the combine-sdiv.ll test by failing to delete some and instructions. The other X86 changes look pretty neutral. I haven't looked at the other targets yet.

Wed, Jan 2, 11:50 PM
craig.topper created D56246: [X86] Add post-isel peephole to fold KAND+KORTEST into KTEST if only the zero flag is used..
Wed, Jan 2, 11:23 PM