Summary: |
GlobalCSE Pass moves phi instructions |
Product: |
Mesa
|
Reporter: |
Karol Herbst <karolherbst> |
Component: |
Drivers/DRI/nouveau | Assignee: |
Nouveau Project <nouveau> |
Status: |
RESOLVED
MOVED
|
QA Contact: |
Nouveau Project <nouveau> |
Severity: |
normal
|
|
|
Priority: |
medium
|
|
|
Version: |
git | |
|
Hardware: |
x86-64 (AMD64) | |
|
OS: |
Linux (All) | |
|
Whiteboard: |
|
i915 platform:
|
|
i915 features:
|
|
Attachments: |
frag.tgsi
|
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 131843 [details] frag.tgsi In the game "Renowned Explorers: International Society" an assertion was hit within codegen, because GlobalCSE wanted to move a phi instruction after a join instruction, which is illegal. backtrace: #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58 #1 0x00007ffff676d54a in __GI_abort () at abort.c:89 #2 0x00007ffff6764eb7 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x52ca18 "q->op != OP_PHI || p->op == OP_PHI", file=file@entry=0x52c968 "../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp", line=line@entry=219, function=function@entry=0x52ce80 <nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*, nv50_ir::Instruction*)::__PRETTY_FUNCTION__> "void nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*, nv50_ir::Instruction*)") at assert.c:92 #3 0x00007ffff6764f62 in __GI___assert_fail (assertion=0x52ca18 "q->op != OP_PHI || p->op == OP_PHI", file=0x52c968 "../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp", line=219, function=0x52ce80 <nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*, nv50_ir::Instruction*)::__PRETTY_FUNCTION__> "void nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*, nv50_ir::Instruction*)") at assert.c:101 #4 0x000000000041f0a0 in nv50_ir::BasicBlock::insertAfter (this=0x82fd10, p=0x818ca0, q=0x81d0c0) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:219 #5 0x00000000004554c0 in nv50_ir::GlobalCSE::visit (this=0x7ffffffe7b70, bb=0x82fd10) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:3466 #6 0x00000000004200fd in nv50_ir::Pass::doRun (this=0x7ffffffe7b70, func=0x7bc1a0, ordered=false, skipPhi=false) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:495 #7 0x000000000041ff05 in nv50_ir::Pass::doRun (this=0x7ffffffe7b70, prog=0x7bc000, ordered=false, skipPhi=false) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:466 #8 0x000000000041fe60 in nv50_ir::Pass::run (this=0x7ffffffe7b70, prog=0x7bc000, ordered=false, skipPhi=false) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:457 #9 0x00000000004561ed in nv50_ir::Program::optimizeSSA (this=0x7bc000, level=3) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:3725 #10 0x0000000000416adf in nv50_ir_generate_code (info=0x7ffffffe87e0) at ../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir.cpp:1256 #11 0x0000000000402e33 in nouveau_codegen (chipset=230, type=1, tokens=0x7fffffff9420, size=0x7ffffffe941c, code=0x7ffffffe9410) at ../../../../../src/gallium/drivers/nouveau/nouveau_compiler.c:126 #12 0x0000000000403210 in main (argc=4, argv=0x7fffffffd528) at ../../../../../src/gallium/drivers/nouveau/nouveau_compiler.c:206