Skip to content

[LLVM CodeGen] Solve LLVM CodeGen br instruction accept not-i1 type issue - #2381

Merged
tqchen merged 2 commits into
apache:masterfrom
FrozenGene:llvm_fix
Jan 8, 2019
Merged

[LLVM CodeGen] Solve LLVM CodeGen br instruction accept not-i1 type issue#2381
tqchen merged 2 commits into
apache:masterfrom
FrozenGene:llvm_fix

Conversation

@FrozenGene

@FrozenGene FrozenGene commented Jan 7, 2019

Copy link
Copy Markdown
Member

see issue: #2364

LLVM br instruction can only accept i1 type of condition (https://llvm.org/docs/LangRef.html#br-instruction), if the condition type is not i1, we couldn't rewrite to tvm_if_then_else, which is converted to LLVM br instruction. This situation could happen in the situation conv2d + prelu via auto tvm tunning on ARM CPU.

@tqchen please help to review it.
cc: @nttstar

@tqchen

tqchen commented Jan 7, 2019

Copy link
Copy Markdown
Member

This is a bit strange, shall we make sure the condition of prelu is bool instead?

@FrozenGene

FrozenGene commented Jan 7, 2019

Copy link
Copy Markdown
Member Author

Prelu is implemented in select statement, prelu helps us expose this issue. In theory, we can constrtuct other cases using select (condition type is N x i1) to expose this issue.

@FrozenGene

Copy link
Copy Markdown
Member Author

Supplement of previous comment. LLVM select instruction can accept i1 or vector of i1 (N xi1) type, see: https://llvm.org/docs/LangRef.html#select-instruction But br can only accept i1 type, so this is why I say we can construct using select (N x i1) to expose this issue.

@tqchen
tqchen merged commit 536ba30 into apache:master Jan 8, 2019
@tqchen

tqchen commented Jan 8, 2019

Copy link
Copy Markdown
Member

Thanks, @FrozenGene for the explaination. I have a follow-up PR that is related #2389 The root cause of this error is when if_then_else get vectorized which causes incorrect semantics.

FrozenGene added a commit to FrozenGene/tvm that referenced this pull request Jan 10, 2019
@FrozenGene FrozenGene mentioned this pull request Jan 28, 2019
wweic pushed a commit to neo-ai/tvm that referenced this pull request Feb 20, 2019
wweic pushed a commit to neo-ai/tvm that referenced this pull request Feb 20, 2019
@FrozenGene
FrozenGene deleted the llvm_fix branch September 10, 2019 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants