https://bugs.llvm.org/show_bug.cgi?id=38519

            Bug ID: 38519
           Summary: vector IR (insertelement/shufflevector) fails to
                    select for wasm32 with -mattr=+simd128
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: WebAssembly
          Assignee: unassignedb...@nondot.org
          Reporter: gonzalob...@gmail.com
                CC: llvm-bugs@lists.llvm.org

define hidden void @i8x16_splat(<1 x i128>*, i8 %v) {
start:
%_3.0.vec.insert.i = insertelement <16 x i8> undef, i8 %v, i32 0
%_3.15.vec.insert.i = shufflevector <16 x i8> %_3.0.vec.insert.i, <16 x i8>
undef, <16 x i32> zeroinitializer
%1 = bitcast <16 x i8> %_3.15.vec.insert.i to i128
%_2.sroa.0.0.vec.insert.i = insertelement <1 x i128> undef, i128 %1, i32 0
store <1 x i128> %_2.sroa.0.0.vec.insert.i, <1 x i128>* %0, align 16
ret void
}

compiles fine with `llc -march=wasm32` but produces the following error with
`llc -march=wasm32 -mattr=+simd128` (https://godbolt.org/g/X5dqST): 

LLVM ERROR: Cannot select: 0x5569fcdf5790: ch = store<(store 16 into %ir.0)>
0x5569fcdb6408, 0x5569fcdf55f0, 0x5569fcdf53e8, undef:i32

  0x5569fcdf55f0: v16i8 = BUILD_VECTOR 0x5569fcdf54b8, 0x5569fcdf54b8,
0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8,
0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8,
0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8, 0x5569fcdf54b8

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

    0x5569fcdf54b8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<1>

      0x5569fcdf5450: i32 = TargetConstant<1>

  0x5569fcdf53e8: i32 = WebAssemblyISD::ARGUMENT TargetConstant:i32<0>

    0x5569fcdf5380: i32 = TargetConstant<0>

  0x5569fcdf5860: i32 = undef

In function: i8x16_splat

Compiler returned: 1

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to