Bug 101371

Summary: GlobalCSE Pass moves phi instructions
Product: Mesa Reporter: Karol Herbst <karolherbst>
Component: Drivers/DRI/nouveauAssignee: 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

Description Karol Herbst 2017-06-10 17:59:33 UTC
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
Comment 1 GitLab Migration User 2019-09-18 20:45:23 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/1135.

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.