http://llvm.org/bugs/show_bug.cgi?id=20396

            Bug ID: 20396
           Summary: [AArch64] Build improper vector filled with undef when
                    constant folding vselect.
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
    Classification: Unclassified

Testcase:
$cat test.ll

define <8 x i16> @test() {
entry:
  %mul.i = select <8 x i1> <i1 true, i1 false, i1 false, i1 true, i1 true, i1
false, i1 false, i1 true>, <8 x i16> <i16 0, i16 undef, i16 undef, i16 0, i16
0, i16 undef, i16 undef, i16 0>, <8 x i16> zeroinitializer
  %add.i = add <8 x i16> %mul.i, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16
1, i16 1>
  ret <8 x i16> %add.i
}

Output:
$llc -mtriple=aarch64 <test.ll

LLVM ERROR: Cannot select: 0x4d423f8: v8i16 = BUILD_VECTOR 0x4d44de8,
0x4d44ce0, 0x4d44ce0, 0x4d44de8, 0x4d44de8, 0x4d44ce0, 0x4d44ce0, 0x4d44de8
[ORD=2] [ID=10]
  0x4d44de8: i32 = Constant<0> [ID=4]
  0x4d44ce0: i32 = undef [ID=3]
  0x4d44ce0: i32 = undef [ID=3]
  0x4d44de8: i32 = Constant<0> [ID=4]
  0x4d44de8: i32 = Constant<0> [ID=4]
  0x4d44ce0: i32 = undef [ID=3]
  0x4d44ce0: i32 = undef [ID=3]
  0x4d44de8: i32 = Constant<0> [ID=4]

It seems that it's caused by the bug in DAGcombiner when doing constant fold on
expanded vselect.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to