w/a detai:
Compiler must not use conditional modifier with mov instruction when converting
from double precision. Instead convert from DP to dst data type and then compare
with zero with conditional modifiers in another mov instruction. For example:
From
mov (16|M0) (eq)f0.0 r10.0<1>:q r20.0<1;1,0>:df
To
mov (16|M0) r10.0<1>:q r20.0<1;1,0>:df
mov (16|M0) (eq)f0.0 null.0<1>:q r10.0<1;1,0>:q
1) Must not use non-qword scalar broadcast when qword is present in any of
the source or destination, instead must convert the non-qword scalar into a qword
before doing a qword scalar broadcast. For example:
mov (8|M0) r88.0<1>:q r2.0<0;1,0>:d
=>
mov (1|M0) r3.0<1>:q r2.0<0;1,0>:d
mov (8|M0) r88.0<1>:q r3.0<0;1,0>:q
2)Instructions with the following pattern must not be used - destination
crosses GRF boundary with qword datatype, and none of the sources datatype is
qword. For example:
shl (16|M0) r11.0<1>:q r7.0<2;1,0>:d 2:w
=>
shl (8|M0) r11.0<1>:q r7.0<2;1,0>:d 2:w
shl (8|M8) r12.0<1>:q r8.0<2;1,0>:d 2:w
Must not use non-qword scalar broadcast when qword is present in any of the source
or destination, instead must convert the non-qword scalar into a qword
before doing a qword scalar broadcast.
From:
mov (8|M0) r88.0<1>:q r2.0<0;1,0>:d
To:
mov (1|M0) r3.0<1>:q r2.0<0;1,0>:d
mov (8|M0) r88.0<1>:q r3.0<0;1,0>:q
automerge is unable to merge new WA entries into the sku_wa_defs.h and it does not
show conflicts either. This change moves those new WA entries into sku_wa_defs.h.