Page MenuHomePhabricator

aqjune (Juneyoung Lee)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 17 2017, 8:49 PM (322 w, 4 d)

Recent Activity

Fri, Mar 10

aqjune added a comment to D143129: [GVN] Restrict equality propagation for pointers.

+1 for landing this patch if there is no significant input from the discourse thread by next Monday (Mar. 13).

Fri, Mar 10, 7:03 AM · Restricted Project, Restricted Project

Wed, Mar 8

aqjune added inline comments to D144903: [X86] Drop single use check for freeze(undef) in LowerAVXCONCAT_VECTORS.
Wed, Mar 8, 2:48 PM · Restricted Project, Restricted Project, Restricted Project
aqjune added inline comments to D144903: [X86] Drop single use check for freeze(undef) in LowerAVXCONCAT_VECTORS.
Wed, Mar 8, 2:47 PM · Restricted Project, Restricted Project, Restricted Project
aqjune added a comment to D143287: [Clang][X86] Change X86 cast intrinsics to use __builtin_nondeterministic_value.

H, is D104790 superseded by this patch?

I don't think so we still need to fix the undefined intrinsics, right? Maybe I'm not understanding the question.

Wed, Mar 8, 2:21 PM · Restricted Project, Restricted Project
aqjune added a comment to D143287: [Clang][X86] Change X86 cast intrinsics to use __builtin_nondeterministic_value.

H, is D104790 superseded by this patch? I wonder what is the status of this patch as well.

Wed, Mar 8, 12:17 PM · Restricted Project, Restricted Project
aqjune abandoned D88217: [GVN] Make propagateEquality look into the operand of freeze.

D143129 will do what this patch was supposed to do.

Wed, Mar 8, 12:13 PM · Restricted Project, Restricted Project
aqjune committed rGa66bc1c4a30c: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if… (authored by aqjune).
[DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if…
Wed, Mar 8, 10:14 AM · Restricted Project, Restricted Project
aqjune closed D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.
Wed, Mar 8, 10:14 AM · Restricted Project, Restricted Project

Tue, Mar 7

aqjune added a comment to D143129: [GVN] Restrict equality propagation for pointers.

Regarding the updated experimental results, I think people might have thoughts about them. I will leave a comment there.

Tue, Mar 7, 9:07 PM · Restricted Project, Restricted Project
aqjune updated the summary of D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.
Tue, Mar 7, 9:53 AM · Restricted Project, Restricted Project
aqjune added a comment to D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.

Thanks..! :)

Tue, Mar 7, 8:51 AM · Restricted Project, Restricted Project
aqjune added a comment to D143129: [GVN] Restrict equality propagation for pointers.

Hi, I am currently occupied with something else. I will be back by today and continue reviewing this.

Tue, Mar 7, 8:23 AM · Restricted Project, Restricted Project
aqjune added a reviewer for D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear: craig.topper.
Tue, Mar 7, 8:22 AM · Restricted Project, Restricted Project

Sat, Mar 4

aqjune added a comment to D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.

ping

Sat, Mar 4, 2:36 PM · Restricted Project, Restricted Project

Tue, Feb 28

aqjune accepted D144671: [InstCombine] prevent miscompiles from select-of-div/rem transform.

LGTM, thanks..!

Tue, Feb 28, 11:57 AM · Restricted Project, Restricted Project
aqjune added inline comments to D144671: [InstCombine] prevent miscompiles from select-of-div/rem transform.
Tue, Feb 28, 4:30 AM · Restricted Project, Restricted Project

Mon, Feb 27

aqjune added a comment to D143129: [GVN] Restrict equality propagation for pointers.

Thanks! Yes, indeed there are still many files having diffs. But the number shrunk to ~1/5, which seems nice!

Mon, Feb 27, 9:56 AM · Restricted Project, Restricted Project

Sun, Feb 26

aqjune added a comment to D144671: [InstCombine] prevent miscompiles from select-of-div/rem transform.

We could carve out some exceptions to this bailout. For example, the transform is actually ok with udiv/urem and a common divisor because poison in the dividend would not cause immediate UB - the divisor has to be zero, and that would be UB in the original code too. That doesn't work with signed div/rem because we can choose the poison dividend to be MinSignedValue, and that overflows when divided by -1 causing UB that doesn't exist in the original code.

Sun, Feb 26, 3:28 PM · Restricted Project, Restricted Project
aqjune added inline comments to D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.
Sun, Feb 26, 9:12 AM · Restricted Project, Restricted Project
aqjune updated the diff for D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.

Allow transformation or types that are to be promoted

Sun, Feb 26, 9:08 AM · Restricted Project, Restricted Project

Feb 24 2023

aqjune added inline comments to D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.
Feb 24 2023, 10:11 AM · Restricted Project, Restricted Project

Feb 23 2023

aqjune added inline comments to D143129: [GVN] Restrict equality propagation for pointers.
Feb 23 2023, 7:34 AM · Restricted Project, Restricted Project

Feb 22 2023

aqjune abandoned D98684: [LangRef] state that align assume op bundle may take an extra argument.
Feb 22 2023, 8:19 AM · Restricted Project, Restricted Project
aqjune abandoned D136737: [Draft] [clang] Add builtin_unspecified_value.

Closing this as D142388 added a function that can be used instead

Feb 22 2023, 8:15 AM · Restricted Project, Restricted Project

Feb 20 2023

aqjune added a comment to D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.

Would it be possible to optimize the ADDCARRY to the same result as without this fold? Similar to combineADDCARRYDiamond. I looked at the DAG that was being produced, but it's not obvious to me how it would be sensible combined to the same result as before.

I added the fold really to handle cases like this, which can often come up after lowering geps:

or x1, x1, #1
add x1, x1, x2
ldr x0, [x1]

Which can be transformed into

add x1, x1, x2
ldr x0, [x1, #1]

If the add+add is reassociated, it makes sense for the add+add-like-or to be reassociated. I have no objections to limiting the fold if we need to though.

Feb 20 2023, 11:21 AM · Restricted Project, Restricted Project

Feb 18 2023

aqjune committed rG2ad0cc9186d4: [DivRemPairs] Strip division's poison generating flag (authored by aqjune).
[DivRemPairs] Strip division's poison generating flag
Feb 18 2023, 1:01 PM · Restricted Project, Restricted Project
aqjune committed rGc726b34ea01b: Add a test for D144333 (authored by aqjune).
Add a test for D144333
Feb 18 2023, 1:01 PM · Restricted Project, Restricted Project
aqjune closed D144333: [DivRemPairs] Strip division's poison generating flag.
Feb 18 2023, 1:01 PM · Restricted Project, Restricted Project
aqjune updated the diff for D144333: [DivRemPairs] Strip division's poison generating flag.

Reflect comments

Feb 18 2023, 1:00 PM · Restricted Project, Restricted Project
aqjune retitled D144333: [DivRemPairs] Strip division's poison generating flag from [DivRemPairs] Strip division's poison generating flag Given this transformation: X % Y -> X - (X / Y) * Y This patch strips off the poison-generating flag of X / Y such as exact, because it may make the optimized form result poison whereas X % Y... to [DivRemPairs] Strip division's poison generating flag.
Feb 18 2023, 12:48 PM · Restricted Project, Restricted Project
aqjune requested review of D144333: [DivRemPairs] Strip division's poison generating flag.
Feb 18 2023, 12:47 PM · Restricted Project, Restricted Project

Feb 16 2023

aqjune added inline comments to D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.
Feb 16 2023, 9:32 PM · Restricted Project, Restricted Project
aqjune updated the diff for D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.

Use isMinSignedConstant

Feb 16 2023, 9:27 PM · Restricted Project, Restricted Project

Feb 15 2023

aqjune added reviewers for D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear: dmgreen, RKSimon.
Feb 15 2023, 10:47 AM · Restricted Project, Restricted Project
aqjune requested review of D144116: [DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear.
Feb 15 2023, 10:05 AM · Restricted Project, Restricted Project

Feb 10 2023

aqjune updated subscribers of D143129: [GVN] Restrict equality propagation for pointers.

The one case I'm probably worried about most are checks of the form %p == null, where replacing %p with null is not generally legal because it has nullary provenance. Replacing two arbitrary pointers likely isn't super important, but replacement with null might be.

Feb 10 2023, 9:06 AM · Restricted Project, Restricted Project

Feb 1 2023

aqjune accepted D143118: [Loads] Return false in canReplacePointersIfEqual helper for non-aliasing pointers.

Looks good to me in high level, but I suggest waiting for one more accept since I haven't been working with the LLVM codebase for a while.

Feb 1 2023, 4:23 PM · Restricted Project, Restricted Project

Dec 12 2022

aqjune accepted D139314: ValueTracking: Teach canCreateUndefOrPoison about FP ops.

I checked the updated instructions' LLVM LangRef documentation as well as cppreference.com description and they looked good to me

Dec 12 2022, 10:43 AM · Restricted Project, Restricted Project

Dec 5 2022

aqjune accepted D139349: LangRef: Clarify semantics of lround/llround and lrint/llrint.
Dec 5 2022, 11:53 AM · Restricted Project, Restricted Project
aqjune added a comment to D139349: LangRef: Clarify semantics of lround/llround and lrint/llrint.

The clarification looks good to me as well, thanks.
Since LLVM IR does not have a notion of unspecified value (AFAIK), defining these as returning a nondeterministic, well-defined value seems like a right choice because it satisfies refinement.
Making them return an undefined value or poison value breaks refinement.

Dec 5 2022, 11:53 AM · Restricted Project, Restricted Project
aqjune updated subscribers of D139314: ValueTracking: Teach canCreateUndefOrPoison about FP ops.
Dec 5 2022, 7:23 AM · Restricted Project, Restricted Project

Oct 25 2022

aqjune added a comment to D136737: [Draft] [clang] Add builtin_unspecified_value.

The updates are analogous to how GNUNullExprClass is processed because UnspecifiedValueExprClass and it is similar (have no operand).

Oct 25 2022, 10:38 PM · Restricted Project, Restricted Project
aqjune requested review of D136737: [Draft] [clang] Add builtin_unspecified_value.
Oct 25 2022, 10:37 PM · Restricted Project, Restricted Project

Aug 10 2022

aqjune added inline comments to D103874: [IR] Rename the shufflevector's undef mask to poison.
Aug 10 2022, 9:48 PM · Restricted Project, Restricted Project, Restricted Project
aqjune committed rG02e56e253302: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*`… (authored by aqjune).
[CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*`…
Aug 10 2022, 9:38 PM · Restricted Project, Restricted Project
aqjune closed D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics.
Aug 10 2022, 9:38 PM · Restricted Project, Restricted Project

Aug 4 2022

aqjune accepted D130680: [IntegerDivision][AMDGPU] Use CreateLogicalOr to block poison propagation..
Aug 4 2022, 11:35 PM · Restricted Project, Restricted Project

Aug 3 2022

aqjune added inline comments to D130680: [IntegerDivision][AMDGPU] Use CreateLogicalOr to block poison propagation..
Aug 3 2022, 5:42 PM · Restricted Project, Restricted Project
aqjune added inline comments to D130680: [IntegerDivision][AMDGPU] Use CreateLogicalOr to block poison propagation..
Aug 3 2022, 9:22 AM · Restricted Project, Restricted Project
aqjune added inline comments to D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics.
Aug 3 2022, 9:20 AM · Restricted Project, Restricted Project
aqjune updated the diff for D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics.

Define undef_or_freeze_undef and use it for the new pattern

Aug 3 2022, 9:16 AM · Restricted Project, Restricted Project

Jul 29 2022

aqjune added inline comments to D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics.
Jul 29 2022, 2:02 AM · Restricted Project, Restricted Project

Jul 27 2022

aqjune added a comment to D130646: [DAG] Add initial SelectionDAG::canCreateUndefOrPoison support.

The logic looks good to me, but it would be great if the patch gets approvals from people familiar with SelectionDag.

Jul 27 2022, 4:01 PM · Restricted Project, Restricted Project

Jul 22 2022

aqjune added inline comments to D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics.
Jul 22 2022, 2:50 AM · Restricted Project, Restricted Project
aqjune requested review of D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics.
Jul 22 2022, 2:48 AM · Restricted Project, Restricted Project

Jun 27 2022

aqjune added a comment to D103874: [IR] Rename the shufflevector's undef mask to poison.

PR31524 (https://github.com/llvm/llvm-project/issues/31524) discusses about the lowering of such intrinsics.
According to the PR, it seems users consider undefined intrinsics as returning unknown but consistent bits.

Jun 27 2022, 6:39 PM · Restricted Project, Restricted Project, Restricted Project
aqjune added a comment to D103874: [IR] Rename the shufflevector's undef mask to poison.

Which intrinsic are you working on here? If this is about the mm_undefined intrinsics, why do we need to change those from the current status quo of using a zero value instead of undef?

Jun 27 2022, 2:13 AM · Restricted Project, Restricted Project, Restricted Project
aqjune added a comment to D103874: [IR] Rename the shufflevector's undef mask to poison.

It seems llvm/lib/Target/X86/X86ISelLowering.cpp's LowerAVXCONCAT_VECTORS is relevant to efficient lowering of shufflevector %x, freeze(poison), mask.

Jun 27 2022, 1:58 AM · Restricted Project, Restricted Project, Restricted Project

Jun 19 2022

Herald added a project to D103874: [IR] Rename the shufflevector's undef mask to poison: Restricted Project.

It seems llvm/lib/Target/X86/X86ISelLowering.cpp's LowerAVXCONCAT_VECTORS is relevant to efficient lowering of shufflevector %x, freeze(poison), mask.

Jun 19 2022, 4:55 AM · Restricted Project, Restricted Project, Restricted Project

Jun 17 2022

aqjune added a comment to D127960: [InstCombine] Push freeze through recurrence phi.

Thank you for confirming it!

Jun 17 2022, 10:25 PM · Restricted Project, Restricted Project
aqjune added inline comments to D127960: [InstCombine] Push freeze through recurrence phi.
Jun 17 2022, 1:08 AM · Restricted Project, Restricted Project

Jun 16 2022

aqjune added a comment to D127960: [InstCombine] Push freeze through recurrence phi.

I suspect that this also obsoletes the CanonicalizeFreezeInLoops pass, and we can probably drop it.

Jun 16 2022, 6:36 PM · Restricted Project, Restricted Project

Jun 6 2022

aqjune added inline comments to D127119: [SLP]Fix undef handling in gather function..
Jun 6 2022, 5:51 PM · Restricted Project, Restricted Project

May 24 2022

aqjune accepted D126296: [ValueTracking] Loads with !dereferenceable metadata cannot be undef/poison.

Per LangRef statements of the definition of dereferenceable(<n>) attribute:

The pointer should be well defined, otherwise it is undefined behavior. This means dereferenceable(<n>) implies noundef.

May 24 2022, 8:13 AM · Restricted Project, Restricted Project

May 18 2022

aqjune accepted D125869: [JumpThreading] Insert freeze when unfolding select.

LGTM

May 18 2022, 4:58 PM · Restricted Project, Restricted Project

May 17 2022

aqjune committed rG85fb9ccfa387: Precommit a test file for D84941 (authored by aqjune).
Precommit a test file for D84941
May 17 2022, 6:52 PM · Restricted Project, Restricted Project
aqjune committed rG3adcf96b4faa: [JumpThreading] Let ProcessImpliedCondition look into freeze instructions (authored by aqjune).
[JumpThreading] Let ProcessImpliedCondition look into freeze instructions
May 17 2022, 6:51 PM · Restricted Project, Restricted Project
aqjune closed D84941: [JumpThreading] Let ProcessImpliedCondition look into freeze instructions.
May 17 2022, 6:51 PM · Restricted Project, Restricted Project
aqjune updated the diff for D84941: [JumpThreading] Let ProcessImpliedCondition look into freeze instructions.

Make test show diff, add a description about why @and_noopt is not optimized yet, update comments in ProcessImpliedCondition

May 17 2022, 6:28 PM · Restricted Project, Restricted Project

May 11 2022

aqjune added inline comments to D125398: [ControlHeightReduction] Freeze condition when converting select to branch.
May 11 2022, 9:15 PM · Restricted Project, Restricted Project

May 2 2022

aqjune added a comment to D122835: [SCEV] Removed an unnecessary assertion in SCEV..

Hi, sorry for my delay. The old assertion seems problematic.

May 2 2022, 10:33 PM · Restricted Project, Restricted Project
aqjune added a comment to D123473: [LICM] Only create load in pre-header when promoting load..

I don't think we actually want to do that. Instead, I think we're making a mistake by considering the load to be immediate UB as opposed to simply returning poison in this case.

May 2 2022, 6:42 AM · Restricted Project, Restricted Project

May 1 2022

aqjune added a comment to D124526: [SimpleLoopUnswitch] Collect either logical ANDs/ORs but not both..

There was a similar miscompilation report (which was introduced by my patch) and a bug fix due to the existence of select cond, true, false in the past: https://reviews.llvm.org/rG5bb38e84d3d0#986154 and https://reviews.llvm.org/rG6b4b1dc6ec6f0bf0a1bb414fbe751ccab99d41a0
Also a follow-up patch to enhance an assertion condition: https://reviews.llvm.org/rG431a40e1e28f181e87dd247b91a5e6872dd64ab4

This only fixes trivial unswitching for now, but a similar problem
likely exists with non-trivial unswitching.

If the select cond, true, false is a concern, what do you think about simplifying it to cond (https://alive2.llvm.org/ce/z/p5Ahrp) in advance before loop unswitch?

Is it possible you did not check the latest version of the patch? It uses helpers to skip select cons, true, false when trying to match logical and/or.

I don't think we really should simplify/modify the IR if we are not unswitching, which is what 6b4b1dc6ec6f0bf0a1bb414fbe751ccab99d41a0 did, but SimpleLoopUnswitch claims no changes have been made.

May 1 2022, 12:52 AM · Restricted Project, Restricted Project

Apr 30 2022

aqjune added a comment to D124677: [ConstantFold] Don't convert getelementptr to ptrtoint+inttoptr.

I don't think this follows: This is talking about "integer constant expressions", which are a front-end concern. It means that the front-end is required to match for (void*)0 and emit that as ptr null rather than inttoptr (i64 0 to ptr). At least from that wording, doing int x = 0; (void*)xdoes not result in a null pointer (though possibly other wording implies that?)

I don't think having ptrtoint 1 have universal provenance and ptrtoint 0 have nullary provenance can lead to consistent semantics. It renders many transforms that are "obviously correct" illegal, such as:

define ptr @src(ptr %p, i64 %idx) {
  %p2 = getelementptr i8, ptr %p, i64 %idx
  ret ptr %p2
}
define ptr @tgt(ptr %p, i64 %idx) {
  %p.int = ptrtoint ptr %p to i64
  %p.add = add i64 %p.int, %idx
  %p2 = inttoptr i64 %p.add to ptr
  ret ptr %p2
}

While this transform is very undesirable, it should be correct because it only increases provenance. However, due to the special ptrtoint 0 handling this is incorrect for the special case where p.int == -idx.

Apr 30 2022, 9:07 PM · Restricted Project, Restricted Project
aqjune committed rG40a2e35599b5: [InstCombine] Remove the undef-related workaround code in visitSelectInst (authored by aqjune).
[InstCombine] Remove the undef-related workaround code in visitSelectInst
Apr 30 2022, 4:52 AM · Restricted Project, Restricted Project
aqjune closed D124426: [InstCombine] Remove the undef-related workaround code in visitSelectInst.
Apr 30 2022, 4:52 AM · Restricted Project, Restricted Project
aqjune added a comment to D124677: [ConstantFold] Don't convert getelementptr to ptrtoint+inttoptr.

This has been observed as a real-world miscompile with rustc.

Apr 30 2022, 3:48 AM · Restricted Project, Restricted Project
aqjune added a comment to D124677: [ConstantFold] Don't convert getelementptr to ptrtoint+inttoptr.

I agree that introducing ptrtoint + inttoptr here doesn't sound like a good idea because both it is bad for alias analysis and its correctness is not clear.

Apr 30 2022, 3:36 AM · Restricted Project, Restricted Project
aqjune added a comment to D124526: [SimpleLoopUnswitch] Collect either logical ANDs/ORs but not both..

There was a similar miscompilation report (which was introduced by my patch) and a bug fix due to the existence of select cond, true, false in the past: https://reviews.llvm.org/rG5bb38e84d3d0#986154 and https://reviews.llvm.org/rG6b4b1dc6ec6f0bf0a1bb414fbe751ccab99d41a0
Also a follow-up patch to enhance an assertion condition: https://reviews.llvm.org/rG431a40e1e28f181e87dd247b91a5e6872dd64ab4

Apr 30 2022, 3:30 AM · Restricted Project, Restricted Project

Apr 27 2022

aqjune updated the diff for D124426: [InstCombine] Remove the undef-related workaround code in visitSelectInst.

Yep, a test added

Apr 27 2022, 3:09 AM · Restricted Project, Restricted Project

Apr 25 2022

aqjune requested review of D124426: [InstCombine] Remove the undef-related workaround code in visitSelectInst.
Apr 25 2022, 6:07 PM · Restricted Project, Restricted Project

Apr 23 2022

aqjune added a comment to D124321: [InstSimplify] Use canReplacePointersIfEqual to conditionally simplify '(ptr1 == ptr2) ? a : b'.

haveSameProvenanceIfEqual seems like a better name, certainly.

Apr 23 2022, 7:48 PM · Restricted Project, Restricted Project
aqjune added a comment to D124321: [InstSimplify] Use canReplacePointersIfEqual to conditionally simplify '(ptr1 == ptr2) ? a : b'.

I began to think that we might not need to make replacement of pointers 'directional' because it is too complex.
What about renaming canReplacePointersIfEqual in Loads.h to haveSameProvenance and only checking the equivalence of two pointers, which will make things simpler (including this patch)?

Apr 23 2022, 7:24 PM · Restricted Project, Restricted Project
aqjune added a comment to D124252: [SimpleLoopUnswitch] Enable freezing of conditions by default..

It sounds great - then after the removal of the old pass I will make a patch that removes https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp#L2508 as well.

Apr 23 2022, 6:53 PM · Restricted Project, Restricted Project
aqjune updated subscribers of D124252: [SimpleLoopUnswitch] Enable freezing of conditions by default..
Apr 23 2022, 1:34 AM · Restricted Project, Restricted Project
aqjune added a comment to D124252: [SimpleLoopUnswitch] Enable freezing of conditions by default..

A quick question: should LoopUnswitch.cpp be fixed as well? It seems the pass is not maintained though. Will SimpleLoopUnswitch supercede the LoopUnswitch pass?

Apr 23 2022, 1:33 AM · Restricted Project, Restricted Project
aqjune added inline comments to D124321: [InstSimplify] Use canReplacePointersIfEqual to conditionally simplify '(ptr1 == ptr2) ? a : b'.
Apr 23 2022, 1:25 AM · Restricted Project, Restricted Project
aqjune requested review of D124321: [InstSimplify] Use canReplacePointersIfEqual to conditionally simplify '(ptr1 == ptr2) ? a : b'.
Apr 23 2022, 1:24 AM · Restricted Project, Restricted Project

Apr 22 2022

aqjune accepted D124252: [SimpleLoopUnswitch] Enable freezing of conditions by default..

Thank you for your work..! The diff looks fine.

Apr 22 2022, 8:19 AM · Restricted Project, Restricted Project

Apr 21 2022

aqjune added a comment to D123991: [LangRef] Clarify load/store of non-byte-sized types.

Well, here we are discussing the semantics of LLVM IR. It's ok for the semantics of SDAG to be different, as long as it's a refinement of LLVM IR's.

Apr 21 2022, 6:46 PM · Restricted Project, Restricted Project

Apr 19 2022

aqjune added a comment to D123991: [LangRef] Clarify load/store of non-byte-sized types.

I confirmed that there are a few other architectures assuming the same semantics:

Apr 19 2022, 6:19 PM · Restricted Project, Restricted Project

Mar 1 2022

aqjune added a comment to D120647: [CGP] Sink compare through freeze.

Also, could you leave a link to Alive2 in the patch description showing that pushing freeze into icmp ops is safe when there are multiple users?

Mar 1 2022, 12:32 AM · Restricted Project, Restricted Project
aqjune added inline comments to D120647: [CGP] Sink compare through freeze.
Mar 1 2022, 12:08 AM · Restricted Project, Restricted Project

Jan 26 2022

aqjune added a comment to D89050: Add support for !noundef metatdata on loads.

Right, but the absence of select -> and/or folding by itself shouldn't matter -- it's only relevant in that it can prevent other transforms

I fully agree, it's just that the presence of that transformation was helping with an optimization later on in the pipeline
in my specific case.

Otherwise there is no issue with code generation of select.

Jan 26 2022, 5:23 PM · Restricted Project

Jan 7 2022

aqjune added a comment to D116766: [SCEV] Sequential/in-order `UMin` expression.

Since x == 0 ? x : umin(x, y) cannot be represented using the current SCEV operations (at least using the ops in SCEVTypes). I believe the new ops in this patch are necessary.
Another approach to support such expressions would be adding a ternary operator and comparisons to SCEV, but it would require bigger changes, I guess?

Jan 7 2022, 1:13 AM · Restricted Project

Jan 5 2022

aqjune added a comment to D93793: [IR] Let IRBuilder's CreateVectorSplat/CreateShuffleVector use poison as placeholder.

I have a babyism question, why poison is preferred to the undef in the pattern ConstantVector::getSplat ?

Jan 5 2022, 6:31 AM · Restricted Project, Restricted Project

Dec 15 2021

aqjune added a comment to D115804: [CodeGen] use saturating FP casts when compiling with "no-strict-float-cast-overflow".

This sounds like a great fix to me! :)

Dec 15 2021, 5:15 PM · Restricted Project

Dec 13 2021

aqjune added a comment to D115526: [InstCombine] don't automatically drop poison-generating flags in SimplifyVectorDemandedElts.

It looks like the shufflevector poison change hasn't landed yet? D93818 / D103874

Thanks for the reminder! ( cc @aqjune @hyeongyukim @regehr )

Dec 13 2021, 6:18 PM · Restricted Project

Nov 25 2021

aqjune committed rG35c1e6ac1af0: [MLIR] [docs] Fix misguided examples in memref.subview operation. (authored by makesource).
[MLIR] [docs] Fix misguided examples in memref.subview operation.
Nov 25 2021, 4:25 AM
aqjune closed D114500: [MLIR] [docs] Fix misguided examples in memref.subview operation..
Nov 25 2021, 4:24 AM · Restricted Project