andrew.w.kaylor (Andy Kaylor)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 2 2013, 1:50 PM (276 w, 3 d)

Recent Activity

Wed, Apr 4

andrew.w.kaylor accepted D44464: allow custom OptBisect classes set to LLVMContext.

Thank you for your patience in addressing my concerns.

Wed, Apr 4, 10:02 AM

Tue, Apr 3

andrew.w.kaylor added inline comments to D44464: allow custom OptBisect classes set to LLVMContext.
Tue, Apr 3, 1:39 PM
andrew.w.kaylor added inline comments to D44464: allow custom OptBisect classes set to LLVMContext.
Tue, Apr 3, 12:07 PM

Tue, Mar 27

andrew.w.kaylor added inline comments to D44464: allow custom OptBisect classes set to LLVMContext.
Tue, Mar 27, 1:30 PM

Mon, Mar 26

andrew.w.kaylor added a comment to D44821: [NFC] OptPassGate extracted from OptBisect.

I'm OK with this.

Mon, Mar 26, 10:06 AM

Fri, Mar 23

andrew.w.kaylor added inline comments to D44821: [NFC] OptPassGate extracted from OptBisect.
Fri, Mar 23, 10:39 AM
andrew.w.kaylor added a comment to D44817: Fix a block color copying problem in LICM.

Sigh.
(a quick scan of things named Map in LLVM doesn't find any other obvious cases of this).

I wonder if we shouldn't have a debug/expensive checks mode where it moves all the memory on find and construct to make all these situations fail obviously and instantly so it could be found by bots.

Fri, Mar 23, 9:57 AM

Mar 22 2018

andrew.w.kaylor created D44817: Fix a block color copying problem in LICM.
Mar 22 2018, 9:40 PM

Mar 20 2018

andrew.w.kaylor added a comment to D44464: allow custom OptBisect classes set to LLVMContext.

As long as you're OK with the fact that this will probably be replaced in the near future (and please add a comment indicating that above the setOptPassGate function), I'm OK with this being added. I do prefer OptPassGate as a name for the generalized functionality.

Mar 20 2018, 8:01 AM

Mar 19 2018

andrew.w.kaylor added a comment to D44464: allow custom OptBisect classes set to LLVMContext.

I would prefer not to overload the behavior of OptBisect. ...

Andrew, would it be ok to create an NFC extracting a pure virtual class OptPassGate from OptBisect? Then I could make use of the OptPassGate interface to implement context specific pass gates without referring to OptBisect.

Mar 19 2018, 5:14 PM

Mar 15 2018

andrew.w.kaylor added a comment to D44464: allow custom OptBisect classes set to LLVMContext.

I would like to stress that we consider OptBisect to be more than just "bisector", but rather the only
available way of skipping optimization passes with an arbitrarily complex control pattern.

Mar 15 2018, 10:20 AM

Mar 14 2018

andrew.w.kaylor added a comment to D44464: allow custom OptBisect classes set to LLVMContext.

I have some concerns about this patch, mostly centered around what the intended use cases are.

Mar 14 2018, 12:18 PM

Mar 7 2018

andrew.w.kaylor added a comment to D44216: [LangRef] make it clear that FP instructions do not have side effects.

Thanks for taking the initiative on this!

Mar 7 2018, 9:51 AM

Mar 6 2018

andrew.w.kaylor added inline comments to D43515: More math intrinsics for conservative math handling.
Mar 6 2018, 9:14 AM

Feb 28 2018

andrew.w.kaylor added inline comments to D43515: More math intrinsics for conservative math handling.
Feb 28 2018, 11:26 AM

Feb 21 2018

andrew.w.kaylor added inline comments to D43515: More math intrinsics for conservative math handling.
Feb 21 2018, 6:18 PM

Feb 20 2018

andrew.w.kaylor added inline comments to D43515: More math intrinsics for conservative math handling.
Feb 20 2018, 11:55 AM

Feb 9 2018

andrew.w.kaylor created D43142: Experimental pass to convert all floating point operations to the equivalent constrained intrinsics.
Feb 9 2018, 2:04 PM

Jan 30 2018

andrew.w.kaylor added a comment to D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

Cheers - did you create the bug report in the end? I can't seem to find it.

Jan 30 2018, 8:28 AM

Jan 25 2018

andrew.w.kaylor accepted D42533: [X86FixupBWInsts] Fix miscompilation if sibling sub-register is live..

Looks good!

Jan 25 2018, 11:16 AM
andrew.w.kaylor added a comment to D42533: [X86FixupBWInsts] Fix miscompilation if sibling sub-register is live..

BTW, thank you very much for this patch!

Jan 25 2018, 9:34 AM
andrew.w.kaylor added inline comments to D42533: [X86FixupBWInsts] Fix miscompilation if sibling sub-register is live..
Jan 25 2018, 9:33 AM
andrew.w.kaylor accepted D42531: [X86FixupBWInsts] Prefer positive checks in the test. NFC.

lgtm

Jan 25 2018, 8:21 AM

Jan 4 2018

andrew.w.kaylor added a comment to D41338: [CodeGen] lower math intrinsics to finite version of libcalls when possible (PR35672).

After thinking through this particular situation a bit more with regard to the STRICT_EXP node, I think what you've chosen to do here is probably correct. I'm not entirely certain what the exp_finite implementation does, but I would expect that with regard to rounding it will produce the same result as the normal function as long as the input is finite. Similarly, I think that the exception behavior of exp_finite should be the same as the non-finite version as long as the input is finite. If the input is non-finite, then I would expect that the appropriate exception was raised or status flag set by whatever produced the value. I don't think either exp or exp_finite will produce an exception for non-finite values. We'll get the wrong answer with exp_finite of course, but the user signed up for that when using the fast math flags.

Jan 4 2018, 11:16 AM

Jan 3 2018

andrew.w.kaylor added a comment to D41338: [CodeGen] lower math intrinsics to finite version of libcalls when possible (PR35672).

Does this make sense for ISD::STRICT_FEXP (the strict version of the node)?

I would guess strict and fast math don't really mix...

I agree.

Sorry for the delay. Let me address this comment first. I would agree too, but I was informed that there's a clang customer in the gaming world that wants to compile with -ffast-math and enable div-by-zero FP exceptions as a way to sanitize their data (at least in development builds).

I assume that we're still a long way from realizing this dream (optimized FP + some subset of FP exceptions enabled) in LLVM, but if there's no correctness issue with allowing this transform, then I think we should treat these nodes the same in this patch.

Jan 3 2018, 6:09 PM

Jan 2 2018

andrew.w.kaylor added a comment to D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

@andrew.w.kaylor What is happening with this patch, will you be able to commit it for Jan 3 to fix PR35240? What about the high 8-bit register issue - is there a bugzilla (and repro) for this?

Jan 2 2018, 9:42 AM

Dec 11 2017

andrew.w.kaylor added a comment to D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

I'm not sure if the following is possible/legal but it fails even with this patch:

body:             |
  bb.0:
    successors:
    liveins: %ch, %bl

    %cl = MOV8rr %bl, implicit-def %cx, implicit killed %ch, implicit-def %eflags
    ; CHECK-NOT: MOV32rr
    RETQ %cx

If that's a valid testcase than "a little more checking to do." (isLive before this patch) has to be fixed. If it's invalid - we'd need an assert for that too (or some mir-verify?). However, that should not be a part of this change, probably. Hence, just asking what's your opinion about that testcase.

Dec 11 2017, 3:32 PM

Nov 29 2017

andrew.w.kaylor updated the diff for D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

Death to the curlies!

Nov 29 2017, 12:37 PM
andrew.w.kaylor added inline comments to D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.
Nov 29 2017, 11:20 AM

Nov 28 2017

andrew.w.kaylor updated the diff for D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

Updated the test case.

Nov 28 2017, 11:46 AM
andrew.w.kaylor added inline comments to D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.
Nov 28 2017, 11:45 AM

Nov 27 2017

andrew.w.kaylor updated the diff for D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

-Refactored getSuperRegDestIfDead() to consolidate the liveness checking logic.
-Added a test case.

Nov 27 2017, 5:14 PM
andrew.w.kaylor added a comment to D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.

FWIW At a first glance this feels to me as we should have the fixes in isLive() instead as that seems to roughly be "LivePhysRegs::contains() with tweaks" where the LivePhysRegs::contains() would check super registers.

Nov 27 2017, 3:14 PM
andrew.w.kaylor created D40524: Handle the case of live 16-bit subregisters in X86FixupBWInsts.
Nov 27 2017, 2:45 PM

Oct 26 2017

andrew.w.kaylor added inline comments to D39304: [IR] redefine 'reassoc' fast-math-flag and add 'trans' fast-math-flag.
Oct 26 2017, 12:25 PM

Oct 18 2017

andrew.w.kaylor added a comment to D38634: AMDGPU : Custom lowering constrained fps..

It isn't clear to me how your custom lowering interacts, if at all, with existing table-driven selection patterns. One of the goals in the implementation up to this point has been to have the instruction selection fall back on existing pattern matching as much as possible so that we don't need to duplicate all of the cases that are currently handled. Can you explain to me how this applies in the AMDGPU case?

Oct 18 2017, 12:49 PM

Oct 6 2017

andrew.w.kaylor requested changes to D38634: AMDGPU : Custom lowering constrained fps..
Oct 6 2017, 12:09 PM

Sep 20 2017

andrew.w.kaylor closed D38060: Remove offset size check in nullptr arithmetic handling.

This was committed as r313784. I put the wrong differential revision number in the comment for that check-in.

Sep 20 2017, 1:50 PM

Sep 19 2017

andrew.w.kaylor created D38060: Remove offset size check in nullptr arithmetic handling.
Sep 19 2017, 4:25 PM
andrew.w.kaylor added a comment to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

This is breaking buildbots for 32-bit targets because the offset in 'nullptr + int8_t_N' is being implicitly cast to an int. That makes the sizeof(offset) == sizeof(ptr) check turn out differently than my tests were assuming.

Sep 19 2017, 2:14 PM

Sep 14 2017

andrew.w.kaylor updated the diff for D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

-Changed GNU idiom from extension to warning.
-Updated to ToT.

Sep 14 2017, 12:38 PM

Sep 13 2017

andrew.w.kaylor added inline comments to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Sep 13 2017, 2:48 PM
andrew.w.kaylor added inline comments to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Sep 13 2017, 2:42 PM
andrew.w.kaylor added a comment to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

Does anything else need to be done for this to be ready to land?

Sep 13 2017, 12:57 PM

Sep 5 2017

andrew.w.kaylor added a comment to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

Ping.

Sep 5 2017, 11:16 AM

Aug 30 2017

andrew.w.kaylor updated the diff for D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

Fixed value-dependent argument in isNullPointerConstant checks.
Added check for C++ zero offset in subtraction.
Added value-dependent test cases.

Aug 30 2017, 5:57 PM
andrew.w.kaylor added inline comments to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Aug 30 2017, 3:46 PM
andrew.w.kaylor updated the diff for D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

Refactored the GNU idiom check to be shared by Sema and CodeGen.
Refined the checks so that nullptr+0 doesn't warn in C++.
Added the zero offset qualification in the warning produced with C++.

Aug 30 2017, 2:25 PM

Aug 29 2017

andrew.w.kaylor added inline comments to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Aug 29 2017, 5:26 PM
andrew.w.kaylor added inline comments to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Aug 29 2017, 4:40 PM
andrew.w.kaylor added inline comments to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Aug 29 2017, 3:45 PM
andrew.w.kaylor updated the diff for D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

Added warnings for null pointer arithmetic.

Aug 29 2017, 12:21 PM

Aug 25 2017

andrew.w.kaylor added a comment to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

I'd really like to see this done in some way such that we can issue a warning along with generating well-defined code. The warning can specifically state that the code is using an extension, etc.

Aug 25 2017, 9:52 AM

Aug 23 2017

andrew.w.kaylor accepted D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.

LGTM

Aug 23 2017, 4:21 PM
andrew.w.kaylor added a comment to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

My intention here was to make this as strict/limited as possible while still handling the cases of interest. There are two different implementations I want to handle. You can see the first variation in the __BPTR_ALIGN definition being added here:

Aug 23 2017, 12:53 PM
andrew.w.kaylor added a comment to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.

Can you revert the white space changes in the places you aren't otherwise modifying? In general, you shouldn't make formatting changes outside of the parts of the file your patch is modifying. It complicates the version control blame process without adding a lot of benefit.

Aug 23 2017, 11:58 AM
andrew.w.kaylor added inline comments to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Aug 23 2017, 11:49 AM

Aug 22 2017

andrew.w.kaylor added a comment to D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.

I'm not sure why the svn attributes got attached to the file I added. I'll remove them before committing.

Aug 22 2017, 5:40 PM
andrew.w.kaylor created D37042: Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc.
Aug 22 2017, 5:36 PM
andrew.w.kaylor added a comment to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.

Can you put this off until the patch that Craig submitted in D36983 either lands or gets rejected? If that change goes through, you should be able to remove your modifications to X86ISelDAGToDAG.cpp.

Aug 22 2017, 5:10 PM

Aug 18 2017

andrew.w.kaylor added a comment to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.

Do we want to give the target any chance to use FMSUB/FNMADD/FNSUB if any of the arguments are negated?

Aug 18 2017, 3:12 PM
andrew.w.kaylor added inline comments to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Aug 18 2017, 2:54 PM

Aug 17 2017

andrew.w.kaylor added inline comments to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Aug 17 2017, 11:17 AM

Aug 15 2017

andrew.w.kaylor added inline comments to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Aug 15 2017, 3:58 PM

Aug 14 2017

andrew.w.kaylor added inline comments to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Aug 14 2017, 10:22 AM

Aug 4 2017

andrew.w.kaylor added a comment to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.

Could you also add a use of this new intrinsic to llvm/test/Verifier/fp-intrinsics.ll?

Aug 4 2017, 3:13 PM
andrew.w.kaylor requested changes to D36335: Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Aug 4 2017, 3:09 PM

Jul 9 2017

andrew.w.kaylor updated the diff for D34163: Add strictfp attribute to prevent unwanted optimizations of libm calls.

-Addressed review feedback
-Rebased

Jul 9 2017, 6:13 AM

Jul 6 2017

andrew.w.kaylor added inline comments to D34163: Add strictfp attribute to prevent unwanted optimizations of libm calls.
Jul 6 2017, 3:22 PM

Jun 22 2017

andrew.w.kaylor updated the diff for D34487: Restrict the definition of loop preheader to avoid special blocks.

Addressed initial review feedback

Jun 22 2017, 1:45 PM
andrew.w.kaylor added inline comments to D34487: Restrict the definition of loop preheader to avoid special blocks.
Jun 22 2017, 1:30 PM

Jun 21 2017

andrew.w.kaylor created D34487: Restrict the definition of loop preheader to avoid special blocks.
Jun 21 2017, 4:55 PM
andrew.w.kaylor added a reviewer for D34163: Add strictfp attribute to prevent unwanted optimizations of libm calls: craig.topper.
Jun 21 2017, 4:38 PM

Jun 13 2017

andrew.w.kaylor created D34163: Add strictfp attribute to prevent unwanted optimizations of libm calls.
Jun 13 2017, 1:07 PM

Jun 7 2017

andrew.w.kaylor requested changes to D34006: [LoopSimplify] Add opt-bisect support to LoopSimplify pass.

Oops. I didn't mean to accept the revision yet.

Jun 7 2017, 12:10 PM
andrew.w.kaylor accepted D34006: [LoopSimplify] Add opt-bisect support to LoopSimplify pass.

It looks like a number of passes have this as a required analysis pass, and some assert that loops are in the simplified form. Can you verify that all passes which depend on this pass can also be skipped by opt-bisect?

Jun 7 2017, 12:10 PM

Jun 1 2017

andrew.w.kaylor updated the diff for D33737: [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin.

Re-wrote the patch to move the isNoBuiltin checks into canConstantFoldCallTo and ConstantFoldCall.

Jun 1 2017, 12:36 PM
andrew.w.kaylor added a comment to D33751: Add opt-bisect support for region passes.

Thanks for doing this!

Jun 1 2017, 9:15 AM

May 31 2017

andrew.w.kaylor added a comment to D33737: [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin.

The other alternative is that you could pass in an AttributeList (the result of getAttributes()) to the functions... that makes it more clear what exactly is getting used, but it's more complicated (and probably involves a bunch of refactoring to expose a function to check isNoBuiltin given a Function/AttributeList pair).

But either way, I would prefer a solution that involves checking for isNoBuiltin() in as few places as possible.

May 31 2017, 4:10 PM
andrew.w.kaylor added a comment to D33737: [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin.

Would it be possible to pass in a CallSite to canConstantFoldCallTo, ConstantFoldCall, and SimplifyCall, to reduce the number of places we check this?

May 31 2017, 3:06 PM
andrew.w.kaylor created D33737: [InstSimplify] Don't constant fold or DCE calls that are marked nobuiltin.
May 31 2017, 1:27 PM

May 25 2017

andrew.w.kaylor updated the diff for D32319: Add constrained intrinsics for some libm-equivalent operations.

Addressed review feedback

May 25 2017, 10:01 AM

May 22 2017

andrew.w.kaylor updated the diff for D32319: Add constrained intrinsics for some libm-equivalent operations.

Fixed LangRef spacing issues in more places

May 22 2017, 1:58 PM
andrew.w.kaylor updated the diff for D32319: Add constrained intrinsics for some libm-equivalent operations.

Addressed review comments
Updated to latest source base

May 22 2017, 1:54 PM

May 12 2017

andrew.w.kaylor added inline comments to D32319: Add constrained intrinsics for some libm-equivalent operations.
May 12 2017, 11:45 AM
andrew.w.kaylor accepted D31789: [TLI] Add mapping for various '__<func>_finite' forms of the math routines to SVML routines.

lgtm

May 12 2017, 10:17 AM

May 11 2017

andrew.w.kaylor added inline comments to D31789: [TLI] Add mapping for various '__<func>_finite' forms of the math routines to SVML routines.
May 11 2017, 2:49 PM
andrew.w.kaylor added inline comments to D31788: [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math.
May 11 2017, 1:35 PM
andrew.w.kaylor added a comment to D31788: [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math.

A couple of things came up as I was preparing this for commit. They're pretty straightforward issues, so I'll just fix them in my sandbox before committing.

May 11 2017, 1:15 PM

May 10 2017

andrew.w.kaylor accepted D31788: [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math.

lgtm

May 10 2017, 2:58 PM
andrew.w.kaylor added a comment to D31787: [TLI] Add declarations for various math header file routines from math-finite.h that create '__<func>_finite as functions.

Still approved.

May 10 2017, 2:58 PM

May 9 2017

andrew.w.kaylor added inline comments to D31788: [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math.
May 9 2017, 5:03 PM
andrew.w.kaylor added inline comments to D31788: [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math.
May 9 2017, 4:40 PM

May 8 2017

andrew.w.kaylor added inline comments to D31787: [TLI] Add declarations for various math header file routines from math-finite.h that create '__<func>_finite as functions.
May 8 2017, 12:28 PM
andrew.w.kaylor added inline comments to D31788: [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math.
May 8 2017, 12:26 PM
andrew.w.kaylor accepted D31787: [TLI] Add declarations for various math header file routines from math-finite.h that create '__<func>_finite as functions.

Looks good to me.

May 8 2017, 11:54 AM

May 5 2017

andrew.w.kaylor accepted D32837: TargetLibraryInfo: Introduce wcslen.

Looks good to me

May 5 2017, 8:48 AM

May 2 2017

andrew.w.kaylor added inline comments to D31787: [TLI] Add declarations for various math header file routines from math-finite.h that create '__<func>_finite as functions.
May 2 2017, 2:23 PM

May 1 2017

andrew.w.kaylor added a comment to D31787: [TLI] Add declarations for various math header file routines from math-finite.h that create '__<func>_finite as functions.

Can you add tests for these changes? I think the attribute.ll and no-proto.ll tests in test/Transforms/InferFunctionAttrs would be the right place to add these. I'm not sure if the existing tests check all of the LibFunc calls or just a representative sample.

May 1 2017, 12:10 PM

Apr 28 2017

andrew.w.kaylor added a comment to D32319: Add constrained intrinsics for some libm-equivalent operations.

Ping.

Apr 28 2017, 10:03 AM