[llvm-dev] llvm-dev Digest, Vol 166, Issue 22

Jon Chesterfield via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 9 09:25:02 PDT 2018


Hi Krzysztof,

Sure, please see below. DAG.dump.() before and after, annotated with what I
believe the DAG means.

I've spent some time debugging the method but it's proving difficult to
determine where the logic is misfiring. Disabling the entire combine causes
a lot of failing x86-64 tests - I may have to learn an upstream vector ISA
to make progress on this.

Thank you


>From your description it seems like you are seeing an incorrect
behavior. If that's the case, it should definitely be fixed. Could you
provide the complete DAG before and after the erroneous transformation?

-Krzysztof

Combining: t25: v2i16 = BUILD_VECTOR t27, t22

Before reduceBuildVecToShuffle

SelectionDAG has 14 nodes:

  t0: ch = EntryToken

  t2: v4i16,ch = CopyFromReg t0, Register:v4i16 %0 // [a b c d]

        t26: v2i16 = extract_subvector t2, Constant:i32<0> // [a b]

      t27: i16 = extract_vector_elt t26, Constant:i32<0> // [a]

        t21: v2i16 = extract_subvector t2, Constant:i32<2> //[c d]

      t22: i16 = extract_vector_elt t21, Constant:i32<0> // [c]

    t25: v2i16 = BUILD_VECTOR t27, t22 // [a c]

  t18: ch,glue = CopyToReg t0, Register:v2i16 %m0, t25

    t19: ch = RTN t18

  t20: ch = RTN_REG_HOLDER t19, Register:v2i16 %m0, t18:1





Creating new node: t28: v2i16 = undef

Creating new node: t29: v2i16 = vector_shuffle<0,0> t26, undef:v2i16

After reduceBuildVecToShuffle

SelectionDAG has 16 nodes:

  t0: ch = EntryToken

  t2: v4i16,ch = CopyFromReg t0, Register:v4i16 %0 // [a b c d]

      t27: i16 = extract_vector_elt t26, Constant:i32<0>

        t21: v2i16 = extract_subvector t2, Constant:i32<2>

      t22: i16 = extract_vector_elt t21, Constant:i32<0>

    t25: v2i16 = BUILD_VECTOR t27, t22

  t18: ch,glue = CopyToReg t0, Register:v2i16 %m0, t25

  t26: v2i16 = extract_subvector t2, Constant:i32<0> // [a b]

  t29: v2i16 = vector_shuffle<0,0> t26, undef:v2i16 // [a a]

    t19: ch = RTN t18

  t20: ch = RTN_REG_HOLDER t19, Register:v2i16 %m0, t18:1





... into: t29: v2i16 = vector_shuffle<0,0> t26, undef:v2i16
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180409/28508500/attachment.html>


More information about the llvm-dev mailing list