You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
remove dead instructions with debug info enabled.
This change removes IGC backend pattern match dependency setting on arguments to debug instructions.
call void @llvm.dbg.value(metadata float %8, metadata !903, metadata !DIExpression()), !dbg !901 ; visa id: 20
This forces generation of instruction producing %8. However, if that instruction is not used, it will be generated in dead code.
For example,
%8 = load float, float addrspace(1)* %7, align 4, !dbg !902 ; visa id: 18
...
%simdShuffle = call float @llvm.genx.GenISA.WaveShuffleIndex.f32(float %8, i32 0, i32 0), !dbg !981 ; visa id: 23
...
call void @llvm.dbg.value(metadata float %simdShuffle, metadata !904, metadata !DIExpression()), !dbg !901 ; visa id: 26
...
%9 = fadd fast float %simdShuffle, %simdShuffle.1, !dbg !982 ; visa id: 30
The pattern matcher will link out %simdShuffle and directly use %8 (regioning),
However, llvm.dbg.value creates a false dependency on %simdShuffle and causes the shuffle
to emit a dead broadcast mov in vISA.
This change wouldn't impact in -O0 debug mode, and just impact -O2 debug mode.
0 commit comments