Test Failure: Transforms/SLPVectorizer/X86/hadd.ll

Test source: git

Comments: LLVM PR44185

Log:

Source: <stdin>
-- 1. ModuleToFunctionPassAdaptor
-- 1. PassManager<Function> : Skipping NOP
-- 2. SLPVectorizerPass

----------------------------------------
define <2 x double> @test_v2f64(<2 x double> %a, <2 x double> %b) {
%0:
  %a0 = extractelement <2 x double> %a, i32 0
  %a1 = extractelement <2 x double> %a, i32 1
  %b0 = extractelement <2 x double> %b, i32 0
  %b1 = extractelement <2 x double> %b, i32 1
  %r0 = fadd double %a0, %a1
  %r1 = fadd double %b0, %b1
  %r00 = insertelement <2 x double> undef, double %r0, i32 0
  %r01 = insertelement <2 x double> %r00, double %r1, i32 1
  ret <2 x double> %r01
}
Transformation seems to be correct! (syntactically equal)

-- 3. SLPVectorizerPass

----------------------------------------
define <2 x double> @test_v2f64(<2 x double> %a, <2 x double> %b) {
%0:
  %a0 = extractelement <2 x double> %a, i32 0
  %a1 = extractelement <2 x double> %a, i32 1
  %b0 = extractelement <2 x double> %b, i32 0
  %b1 = extractelement <2 x double> %b, i32 1
  %r0 = fadd double %a0, %a1
  %r1 = fadd double %b0, %b1
  %r00 = insertelement <2 x double> undef, double %r0, i32 0
  %r01 = insertelement <2 x double> %r00, double %r1, i32 1
  ret <2 x double> %r01
}
=>
define <2 x double> @test_v2f64(<2 x double> %a, <2 x double> %b) {
%0:
  %a0 = extractelement <2 x double> %a, i32 0
  %a1 = extractelement <2 x double> %a, i32 1
  %b0 = extractelement <2 x double> %b, i32 0
  %b1 = extractelement <2 x double> %b, i32 1
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  ret <2 x double> %5
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 4. InstCombinePass

----------------------------------------
define <2 x double> @test_v2f64(<2 x double> %a, <2 x double> %b) {
%0:
  %a0 = extractelement <2 x double> %a, i32 0
  %a1 = extractelement <2 x double> %a, i32 1
  %b0 = extractelement <2 x double> %b, i32 0
  %b1 = extractelement <2 x double> %b, i32 1
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  ret <2 x double> %5
}
Transformation seems to be correct! (syntactically equal)

-- 5. InstCombinePass

----------------------------------------
define <2 x double> @test_v2f64(<2 x double> %a, <2 x double> %b) {
%0:
  %a0 = extractelement <2 x double> %a, i32 0
  %a1 = extractelement <2 x double> %a, i32 1
  %b0 = extractelement <2 x double> %b, i32 0
  %b1 = extractelement <2 x double> %b, i32 1
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  ret <2 x double> %5
}
=>
define <2 x double> @test_v2f64(<2 x double> %a, <2 x double> %b) {
%0:
  %1 = shufflevector <2 x double> %a, <2 x double> %b, 0, 2
  %2 = shufflevector <2 x double> %a, <2 x double> %b, 1, 3
  %3 = fadd <2 x double> %1, %2
  ret <2 x double> %3
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 6. PassManager<Function> : Skipping NOP
-- 7. PassManager<Function> : Skipping NOP
-- 8. SLPVectorizerPass

----------------------------------------
define <4 x float> @test_v4f32(<4 x float> %a, <4 x float> %b) {
%0:
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %a2 = extractelement <4 x float> %a, i32 2
  %a3 = extractelement <4 x float> %a, i32 3
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %b2 = extractelement <4 x float> %b, i32 2
  %b3 = extractelement <4 x float> %b, i32 3
  %r0 = fadd float %a0, %a1
  %r1 = fadd float %a2, %a3
  %r2 = fadd float %b0, %b1
  %r3 = fadd float %b2, %b3
  %r00 = insertelement <4 x float> undef, float %r0, i32 0
  %r01 = insertelement <4 x float> %r00, float %r1, i32 1
  %r02 = insertelement <4 x float> %r01, float %r2, i32 2
  %r03 = insertelement <4 x float> %r02, float %r3, i32 3
  ret <4 x float> %r03
}
Transformation seems to be correct! (syntactically equal)

-- 9. SLPVectorizerPass

----------------------------------------
define <4 x float> @test_v4f32(<4 x float> %a, <4 x float> %b) {
%0:
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %a2 = extractelement <4 x float> %a, i32 2
  %a3 = extractelement <4 x float> %a, i32 3
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %b2 = extractelement <4 x float> %b, i32 2
  %b3 = extractelement <4 x float> %b, i32 3
  %r0 = fadd float %a0, %a1
  %r1 = fadd float %a2, %a3
  %r2 = fadd float %b0, %b1
  %r3 = fadd float %b2, %b3
  %r00 = insertelement <4 x float> undef, float %r0, i32 0
  %r01 = insertelement <4 x float> %r00, float %r1, i32 1
  %r02 = insertelement <4 x float> %r01, float %r2, i32 2
  %r03 = insertelement <4 x float> %r02, float %r3, i32 3
  ret <4 x float> %r03
}
=>
define <4 x float> @test_v4f32(<4 x float> %a, <4 x float> %b) {
%0:
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %a2 = extractelement <4 x float> %a, i32 2
  %a3 = extractelement <4 x float> %a, i32 3
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %b2 = extractelement <4 x float> %b, i32 2
  %b3 = extractelement <4 x float> %b, i32 3
  %1 = insertelement <4 x float> poison, float %a0, i32 0
  %2 = insertelement <4 x float> %1, float %a2, i32 1
  %3 = insertelement <4 x float> %2, float %b0, i32 2
  %4 = insertelement <4 x float> %3, float %b2, i32 3
  %5 = insertelement <4 x float> poison, float %a1, i32 0
  %6 = insertelement <4 x float> %5, float %a3, i32 1
  %7 = insertelement <4 x float> %6, float %b1, i32 2
  %8 = insertelement <4 x float> %7, float %b3, i32 3
  %9 = fadd <4 x float> %4, %8
  ret <4 x float> %9
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 10. InstCombinePass

----------------------------------------
define <4 x float> @test_v4f32(<4 x float> %a, <4 x float> %b) {
%0:
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %a2 = extractelement <4 x float> %a, i32 2
  %a3 = extractelement <4 x float> %a, i32 3
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %b2 = extractelement <4 x float> %b, i32 2
  %b3 = extractelement <4 x float> %b, i32 3
  %1 = insertelement <4 x float> poison, float %a0, i32 0
  %2 = insertelement <4 x float> %1, float %a2, i32 1
  %3 = insertelement <4 x float> %2, float %b0, i32 2
  %4 = insertelement <4 x float> %3, float %b2, i32 3
  %5 = insertelement <4 x float> poison, float %a1, i32 0
  %6 = insertelement <4 x float> %5, float %a3, i32 1
  %7 = insertelement <4 x float> %6, float %b1, i32 2
  %8 = insertelement <4 x float> %7, float %b3, i32 3
  %9 = fadd <4 x float> %4, %8
  ret <4 x float> %9
}
Transformation seems to be correct! (syntactically equal)

-- 11. InstCombinePass

----------------------------------------
define <4 x float> @test_v4f32(<4 x float> %a, <4 x float> %b) {
%0:
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %a2 = extractelement <4 x float> %a, i32 2
  %a3 = extractelement <4 x float> %a, i32 3
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %b2 = extractelement <4 x float> %b, i32 2
  %b3 = extractelement <4 x float> %b, i32 3
  %1 = insertelement <4 x float> poison, float %a0, i32 0
  %2 = insertelement <4 x float> %1, float %a2, i32 1
  %3 = insertelement <4 x float> %2, float %b0, i32 2
  %4 = insertelement <4 x float> %3, float %b2, i32 3
  %5 = insertelement <4 x float> poison, float %a1, i32 0
  %6 = insertelement <4 x float> %5, float %a3, i32 1
  %7 = insertelement <4 x float> %6, float %b1, i32 2
  %8 = insertelement <4 x float> %7, float %b3, i32 3
  %9 = fadd <4 x float> %4, %8
  ret <4 x float> %9
}
=>
define <4 x float> @test_v4f32(<4 x float> %a, <4 x float> %b) {
%0:
  %1 = shufflevector <4 x float> %a, <4 x float> %b, 0, 2, 4, 6
  %2 = shufflevector <4 x float> %a, <4 x float> %b, 1, 3, 5, 7
  %3 = fadd <4 x float> %1, %2
  ret <4 x float> %3
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 12. PassManager<Function> : Skipping NOP
-- 13. PassManager<Function> : Skipping NOP
-- 14. SLPVectorizerPass

----------------------------------------
define <2 x i64> @test_v2i64(<2 x i64> %a, <2 x i64> %b) {
%0:
  %a0 = extractelement <2 x i64> %a, i32 0
  %a1 = extractelement <2 x i64> %a, i32 1
  %b0 = extractelement <2 x i64> %b, i32 0
  %b1 = extractelement <2 x i64> %b, i32 1
  %r0 = add i64 %a0, %a1
  %r1 = add i64 %b0, %b1
  %r00 = insertelement <2 x i64> undef, i64 %r0, i32 0
  %r01 = insertelement <2 x i64> %r00, i64 %r1, i32 1
  ret <2 x i64> %r01
}
Transformation seems to be correct! (syntactically equal)

-- 15. SLPVectorizerPass

----------------------------------------
define <2 x i64> @test_v2i64(<2 x i64> %a, <2 x i64> %b) {
%0:
  %a0 = extractelement <2 x i64> %a, i32 0
  %a1 = extractelement <2 x i64> %a, i32 1
  %b0 = extractelement <2 x i64> %b, i32 0
  %b1 = extractelement <2 x i64> %b, i32 1
  %r0 = add i64 %a0, %a1
  %r1 = add i64 %b0, %b1
  %r00 = insertelement <2 x i64> undef, i64 %r0, i32 0
  %r01 = insertelement <2 x i64> %r00, i64 %r1, i32 1
  ret <2 x i64> %r01
}
=>
define <2 x i64> @test_v2i64(<2 x i64> %a, <2 x i64> %b) {
%0:
  %a0 = extractelement <2 x i64> %a, i32 0
  %a1 = extractelement <2 x i64> %a, i32 1
  %b0 = extractelement <2 x i64> %b, i32 0
  %b1 = extractelement <2 x i64> %b, i32 1
  %1 = insertelement <2 x i64> poison, i64 %a0, i32 0
  %2 = insertelement <2 x i64> %1, i64 %b0, i32 1
  %3 = insertelement <2 x i64> poison, i64 %a1, i32 0
  %4 = insertelement <2 x i64> %3, i64 %b1, i32 1
  %5 = add <2 x i64> %2, %4
  ret <2 x i64> %5
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 16. InstCombinePass

----------------------------------------
define <2 x i64> @test_v2i64(<2 x i64> %a, <2 x i64> %b) {
%0:
  %a0 = extractelement <2 x i64> %a, i32 0
  %a1 = extractelement <2 x i64> %a, i32 1
  %b0 = extractelement <2 x i64> %b, i32 0
  %b1 = extractelement <2 x i64> %b, i32 1
  %1 = insertelement <2 x i64> poison, i64 %a0, i32 0
  %2 = insertelement <2 x i64> %1, i64 %b0, i32 1
  %3 = insertelement <2 x i64> poison, i64 %a1, i32 0
  %4 = insertelement <2 x i64> %3, i64 %b1, i32 1
  %5 = add <2 x i64> %2, %4
  ret <2 x i64> %5
}
Transformation seems to be correct! (syntactically equal)

-- 17. InstCombinePass

----------------------------------------
define <2 x i64> @test_v2i64(<2 x i64> %a, <2 x i64> %b) {
%0:
  %a0 = extractelement <2 x i64> %a, i32 0
  %a1 = extractelement <2 x i64> %a, i32 1
  %b0 = extractelement <2 x i64> %b, i32 0
  %b1 = extractelement <2 x i64> %b, i32 1
  %1 = insertelement <2 x i64> poison, i64 %a0, i32 0
  %2 = insertelement <2 x i64> %1, i64 %b0, i32 1
  %3 = insertelement <2 x i64> poison, i64 %a1, i32 0
  %4 = insertelement <2 x i64> %3, i64 %b1, i32 1
  %5 = add <2 x i64> %2, %4
  ret <2 x i64> %5
}
=>
define <2 x i64> @test_v2i64(<2 x i64> %a, <2 x i64> %b) {
%0:
  %1 = shufflevector <2 x i64> %a, <2 x i64> %b, 0, 2
  %2 = shufflevector <2 x i64> %a, <2 x i64> %b, 1, 3
  %3 = add <2 x i64> %1, %2
  ret <2 x i64> %3
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 18. PassManager<Function> : Skipping NOP
-- 19. PassManager<Function> : Skipping NOP
-- 20. SLPVectorizerPass

----------------------------------------
define <4 x i32> @test_v4i32(<4 x i32> %a, <4 x i32> %b) {
%0:
  %a0 = extractelement <4 x i32> %a, i32 0
  %a1 = extractelement <4 x i32> %a, i32 1
  %a2 = extractelement <4 x i32> %a, i32 2
  %a3 = extractelement <4 x i32> %a, i32 3
  %b0 = extractelement <4 x i32> %b, i32 0
  %b1 = extractelement <4 x i32> %b, i32 1
  %b2 = extractelement <4 x i32> %b, i32 2
  %b3 = extractelement <4 x i32> %b, i32 3
  %r0 = add i32 %a0, %a1
  %r1 = add i32 %a2, %a3
  %r2 = add i32 %b0, %b1
  %r3 = add i32 %b2, %b3
  %r00 = insertelement <4 x i32> undef, i32 %r0, i32 0
  %r01 = insertelement <4 x i32> %r00, i32 %r1, i32 1
  %r02 = insertelement <4 x i32> %r01, i32 %r2, i32 2
  %r03 = insertelement <4 x i32> %r02, i32 %r3, i32 3
  ret <4 x i32> %r03
}
Transformation seems to be correct! (syntactically equal)

-- 21. SLPVectorizerPass

----------------------------------------
define <4 x i32> @test_v4i32(<4 x i32> %a, <4 x i32> %b) {
%0:
  %a0 = extractelement <4 x i32> %a, i32 0
  %a1 = extractelement <4 x i32> %a, i32 1
  %a2 = extractelement <4 x i32> %a, i32 2
  %a3 = extractelement <4 x i32> %a, i32 3
  %b0 = extractelement <4 x i32> %b, i32 0
  %b1 = extractelement <4 x i32> %b, i32 1
  %b2 = extractelement <4 x i32> %b, i32 2
  %b3 = extractelement <4 x i32> %b, i32 3
  %r0 = add i32 %a0, %a1
  %r1 = add i32 %a2, %a3
  %r2 = add i32 %b0, %b1
  %r3 = add i32 %b2, %b3
  %r00 = insertelement <4 x i32> undef, i32 %r0, i32 0
  %r01 = insertelement <4 x i32> %r00, i32 %r1, i32 1
  %r02 = insertelement <4 x i32> %r01, i32 %r2, i32 2
  %r03 = insertelement <4 x i32> %r02, i32 %r3, i32 3
  ret <4 x i32> %r03
}
=>
define <4 x i32> @test_v4i32(<4 x i32> %a, <4 x i32> %b) {
%0:
  %a0 = extractelement <4 x i32> %a, i32 0
  %a1 = extractelement <4 x i32> %a, i32 1
  %a2 = extractelement <4 x i32> %a, i32 2
  %a3 = extractelement <4 x i32> %a, i32 3
  %b0 = extractelement <4 x i32> %b, i32 0
  %b1 = extractelement <4 x i32> %b, i32 1
  %b2 = extractelement <4 x i32> %b, i32 2
  %b3 = extractelement <4 x i32> %b, i32 3
  %1 = insertelement <4 x i32> poison, i32 %a0, i32 0
  %2 = insertelement <4 x i32> %1, i32 %a2, i32 1
  %3 = insertelement <4 x i32> %2, i32 %b0, i32 2
  %4 = insertelement <4 x i32> %3, i32 %b2, i32 3
  %5 = insertelement <4 x i32> poison, i32 %a1, i32 0
  %6 = insertelement <4 x i32> %5, i32 %a3, i32 1
  %7 = insertelement <4 x i32> %6, i32 %b1, i32 2
  %8 = insertelement <4 x i32> %7, i32 %b3, i32 3
  %9 = add <4 x i32> %4, %8
  ret <4 x i32> %9
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 22. InstCombinePass

----------------------------------------
define <4 x i32> @test_v4i32(<4 x i32> %a, <4 x i32> %b) {
%0:
  %a0 = extractelement <4 x i32> %a, i32 0
  %a1 = extractelement <4 x i32> %a, i32 1
  %a2 = extractelement <4 x i32> %a, i32 2
  %a3 = extractelement <4 x i32> %a, i32 3
  %b0 = extractelement <4 x i32> %b, i32 0
  %b1 = extractelement <4 x i32> %b, i32 1
  %b2 = extractelement <4 x i32> %b, i32 2
  %b3 = extractelement <4 x i32> %b, i32 3
  %1 = insertelement <4 x i32> poison, i32 %a0, i32 0
  %2 = insertelement <4 x i32> %1, i32 %a2, i32 1
  %3 = insertelement <4 x i32> %2, i32 %b0, i32 2
  %4 = insertelement <4 x i32> %3, i32 %b2, i32 3
  %5 = insertelement <4 x i32> poison, i32 %a1, i32 0
  %6 = insertelement <4 x i32> %5, i32 %a3, i32 1
  %7 = insertelement <4 x i32> %6, i32 %b1, i32 2
  %8 = insertelement <4 x i32> %7, i32 %b3, i32 3
  %9 = add <4 x i32> %4, %8
  ret <4 x i32> %9
}
Transformation seems to be correct! (syntactically equal)

-- 23. InstCombinePass

----------------------------------------
define <4 x i32> @test_v4i32(<4 x i32> %a, <4 x i32> %b) {
%0:
  %a0 = extractelement <4 x i32> %a, i32 0
  %a1 = extractelement <4 x i32> %a, i32 1
  %a2 = extractelement <4 x i32> %a, i32 2
  %a3 = extractelement <4 x i32> %a, i32 3
  %b0 = extractelement <4 x i32> %b, i32 0
  %b1 = extractelement <4 x i32> %b, i32 1
  %b2 = extractelement <4 x i32> %b, i32 2
  %b3 = extractelement <4 x i32> %b, i32 3
  %1 = insertelement <4 x i32> poison, i32 %a0, i32 0
  %2 = insertelement <4 x i32> %1, i32 %a2, i32 1
  %3 = insertelement <4 x i32> %2, i32 %b0, i32 2
  %4 = insertelement <4 x i32> %3, i32 %b2, i32 3
  %5 = insertelement <4 x i32> poison, i32 %a1, i32 0
  %6 = insertelement <4 x i32> %5, i32 %a3, i32 1
  %7 = insertelement <4 x i32> %6, i32 %b1, i32 2
  %8 = insertelement <4 x i32> %7, i32 %b3, i32 3
  %9 = add <4 x i32> %4, %8
  ret <4 x i32> %9
}
=>
define <4 x i32> @test_v4i32(<4 x i32> %a, <4 x i32> %b) {
%0:
  %1 = shufflevector <4 x i32> %a, <4 x i32> %b, 0, 2, 4, 6
  %2 = shufflevector <4 x i32> %a, <4 x i32> %b, 1, 3, 5, 7
  %3 = add <4 x i32> %1, %2
  ret <4 x i32> %3
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 24. PassManager<Function> : Skipping NOP
-- 25. PassManager<Function> : Skipping NOP
-- 26. SLPVectorizerPass

----------------------------------------
define <8 x i16> @test_v8i16(<8 x i16> %a, <8 x i16> %b) {
%0:
  %a0 = extractelement <8 x i16> %a, i32 0
  %a1 = extractelement <8 x i16> %a, i32 1
  %a2 = extractelement <8 x i16> %a, i32 2
  %a3 = extractelement <8 x i16> %a, i32 3
  %a4 = extractelement <8 x i16> %a, i32 4
  %a5 = extractelement <8 x i16> %a, i32 5
  %a6 = extractelement <8 x i16> %a, i32 6
  %a7 = extractelement <8 x i16> %a, i32 7
  %b0 = extractelement <8 x i16> %b, i32 0
  %b1 = extractelement <8 x i16> %b, i32 1
  %b2 = extractelement <8 x i16> %b, i32 2
  %b3 = extractelement <8 x i16> %b, i32 3
  %b4 = extractelement <8 x i16> %b, i32 4
  %b5 = extractelement <8 x i16> %b, i32 5
  %b6 = extractelement <8 x i16> %b, i32 6
  %b7 = extractelement <8 x i16> %b, i32 7
  %r0 = add i16 %a0, %a1
  %r1 = add i16 %a2, %a3
  %r2 = add i16 %a4, %a5
  %r3 = add i16 %a6, %a7
  %r4 = add i16 %b0, %b1
  %r5 = add i16 %b2, %b3
  %r6 = add i16 %b4, %b5
  %r7 = add i16 %b6, %b7
  %r00 = insertelement <8 x i16> undef, i16 %r0, i32 0
  %r01 = insertelement <8 x i16> %r00, i16 %r1, i32 1
  %r02 = insertelement <8 x i16> %r01, i16 %r2, i32 2
  %r03 = insertelement <8 x i16> %r02, i16 %r3, i32 3
  %r04 = insertelement <8 x i16> %r03, i16 %r4, i32 4
  %r05 = insertelement <8 x i16> %r04, i16 %r5, i32 5
  %r06 = insertelement <8 x i16> %r05, i16 %r6, i32 6
  %r07 = insertelement <8 x i16> %r06, i16 %r7, i32 7
  ret <8 x i16> %r07
}
Transformation seems to be correct! (syntactically equal)

-- 27. SLPVectorizerPass

----------------------------------------
define <8 x i16> @test_v8i16(<8 x i16> %a, <8 x i16> %b) {
%0:
  %a0 = extractelement <8 x i16> %a, i32 0
  %a1 = extractelement <8 x i16> %a, i32 1
  %a2 = extractelement <8 x i16> %a, i32 2
  %a3 = extractelement <8 x i16> %a, i32 3
  %a4 = extractelement <8 x i16> %a, i32 4
  %a5 = extractelement <8 x i16> %a, i32 5
  %a6 = extractelement <8 x i16> %a, i32 6
  %a7 = extractelement <8 x i16> %a, i32 7
  %b0 = extractelement <8 x i16> %b, i32 0
  %b1 = extractelement <8 x i16> %b, i32 1
  %b2 = extractelement <8 x i16> %b, i32 2
  %b3 = extractelement <8 x i16> %b, i32 3
  %b4 = extractelement <8 x i16> %b, i32 4
  %b5 = extractelement <8 x i16> %b, i32 5
  %b6 = extractelement <8 x i16> %b, i32 6
  %b7 = extractelement <8 x i16> %b, i32 7
  %r0 = add i16 %a0, %a1
  %r1 = add i16 %a2, %a3
  %r2 = add i16 %a4, %a5
  %r3 = add i16 %a6, %a7
  %r4 = add i16 %b0, %b1
  %r5 = add i16 %b2, %b3
  %r6 = add i16 %b4, %b5
  %r7 = add i16 %b6, %b7
  %r00 = insertelement <8 x i16> undef, i16 %r0, i32 0
  %r01 = insertelement <8 x i16> %r00, i16 %r1, i32 1
  %r02 = insertelement <8 x i16> %r01, i16 %r2, i32 2
  %r03 = insertelement <8 x i16> %r02, i16 %r3, i32 3
  %r04 = insertelement <8 x i16> %r03, i16 %r4, i32 4
  %r05 = insertelement <8 x i16> %r04, i16 %r5, i32 5
  %r06 = insertelement <8 x i16> %r05, i16 %r6, i32 6
  %r07 = insertelement <8 x i16> %r06, i16 %r7, i32 7
  ret <8 x i16> %r07
}
=>
define <8 x i16> @test_v8i16(<8 x i16> %a, <8 x i16> %b) {
%0:
  %a0 = extractelement <8 x i16> %a, i32 0
  %a1 = extractelement <8 x i16> %a, i32 1
  %a2 = extractelement <8 x i16> %a, i32 2
  %a3 = extractelement <8 x i16> %a, i32 3
  %a4 = extractelement <8 x i16> %a, i32 4
  %a5 = extractelement <8 x i16> %a, i32 5
  %a6 = extractelement <8 x i16> %a, i32 6
  %a7 = extractelement <8 x i16> %a, i32 7
  %b0 = extractelement <8 x i16> %b, i32 0
  %b1 = extractelement <8 x i16> %b, i32 1
  %b2 = extractelement <8 x i16> %b, i32 2
  %b3 = extractelement <8 x i16> %b, i32 3
  %b4 = extractelement <8 x i16> %b, i32 4
  %b5 = extractelement <8 x i16> %b, i32 5
  %b6 = extractelement <8 x i16> %b, i32 6
  %b7 = extractelement <8 x i16> %b, i32 7
  %1 = insertelement <8 x i16> poison, i16 %a0, i32 0
  %2 = insertelement <8 x i16> %1, i16 %a2, i32 1
  %3 = insertelement <8 x i16> %2, i16 %a4, i32 2
  %4 = insertelement <8 x i16> %3, i16 %a6, i32 3
  %5 = insertelement <8 x i16> %4, i16 %b0, i32 4
  %6 = insertelement <8 x i16> %5, i16 %b2, i32 5
  %7 = insertelement <8 x i16> %6, i16 %b4, i32 6
  %8 = insertelement <8 x i16> %7, i16 %b6, i32 7
  %9 = insertelement <8 x i16> poison, i16 %a1, i32 0
  %10 = insertelement <8 x i16> %9, i16 %a3, i32 1
  %11 = insertelement <8 x i16> %10, i16 %a5, i32 2
  %12 = insertelement <8 x i16> %11, i16 %a7, i32 3
  %13 = insertelement <8 x i16> %12, i16 %b1, i32 4
  %14 = insertelement <8 x i16> %13, i16 %b3, i32 5
  %15 = insertelement <8 x i16> %14, i16 %b5, i32 6
  %16 = insertelement <8 x i16> %15, i16 %b7, i32 7
  %17 = add <8 x i16> %8, %16
  ret <8 x i16> %17
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 28. InstCombinePass

----------------------------------------
define <8 x i16> @test_v8i16(<8 x i16> %a, <8 x i16> %b) {
%0:
  %a0 = extractelement <8 x i16> %a, i32 0
  %a1 = extractelement <8 x i16> %a, i32 1
  %a2 = extractelement <8 x i16> %a, i32 2
  %a3 = extractelement <8 x i16> %a, i32 3
  %a4 = extractelement <8 x i16> %a, i32 4
  %a5 = extractelement <8 x i16> %a, i32 5
  %a6 = extractelement <8 x i16> %a, i32 6
  %a7 = extractelement <8 x i16> %a, i32 7
  %b0 = extractelement <8 x i16> %b, i32 0
  %b1 = extractelement <8 x i16> %b, i32 1
  %b2 = extractelement <8 x i16> %b, i32 2
  %b3 = extractelement <8 x i16> %b, i32 3
  %b4 = extractelement <8 x i16> %b, i32 4
  %b5 = extractelement <8 x i16> %b, i32 5
  %b6 = extractelement <8 x i16> %b, i32 6
  %b7 = extractelement <8 x i16> %b, i32 7
  %1 = insertelement <8 x i16> poison, i16 %a0, i32 0
  %2 = insertelement <8 x i16> %1, i16 %a2, i32 1
  %3 = insertelement <8 x i16> %2, i16 %a4, i32 2
  %4 = insertelement <8 x i16> %3, i16 %a6, i32 3
  %5 = insertelement <8 x i16> %4, i16 %b0, i32 4
  %6 = insertelement <8 x i16> %5, i16 %b2, i32 5
  %7 = insertelement <8 x i16> %6, i16 %b4, i32 6
  %8 = insertelement <8 x i16> %7, i16 %b6, i32 7
  %9 = insertelement <8 x i16> poison, i16 %a1, i32 0
  %10 = insertelement <8 x i16> %9, i16 %a3, i32 1
  %11 = insertelement <8 x i16> %10, i16 %a5, i32 2
  %12 = insertelement <8 x i16> %11, i16 %a7, i32 3
  %13 = insertelement <8 x i16> %12, i16 %b1, i32 4
  %14 = insertelement <8 x i16> %13, i16 %b3, i32 5
  %15 = insertelement <8 x i16> %14, i16 %b5, i32 6
  %16 = insertelement <8 x i16> %15, i16 %b7, i32 7
  %17 = add <8 x i16> %8, %16
  ret <8 x i16> %17
}
Transformation seems to be correct! (syntactically equal)

-- 29. InstCombinePass

----------------------------------------
define <8 x i16> @test_v8i16(<8 x i16> %a, <8 x i16> %b) {
%0:
  %a0 = extractelement <8 x i16> %a, i32 0
  %a1 = extractelement <8 x i16> %a, i32 1
  %a2 = extractelement <8 x i16> %a, i32 2
  %a3 = extractelement <8 x i16> %a, i32 3
  %a4 = extractelement <8 x i16> %a, i32 4
  %a5 = extractelement <8 x i16> %a, i32 5
  %a6 = extractelement <8 x i16> %a, i32 6
  %a7 = extractelement <8 x i16> %a, i32 7
  %b0 = extractelement <8 x i16> %b, i32 0
  %b1 = extractelement <8 x i16> %b, i32 1
  %b2 = extractelement <8 x i16> %b, i32 2
  %b3 = extractelement <8 x i16> %b, i32 3
  %b4 = extractelement <8 x i16> %b, i32 4
  %b5 = extractelement <8 x i16> %b, i32 5
  %b6 = extractelement <8 x i16> %b, i32 6
  %b7 = extractelement <8 x i16> %b, i32 7
  %1 = insertelement <8 x i16> poison, i16 %a0, i32 0
  %2 = insertelement <8 x i16> %1, i16 %a2, i32 1
  %3 = insertelement <8 x i16> %2, i16 %a4, i32 2
  %4 = insertelement <8 x i16> %3, i16 %a6, i32 3
  %5 = insertelement <8 x i16> %4, i16 %b0, i32 4
  %6 = insertelement <8 x i16> %5, i16 %b2, i32 5
  %7 = insertelement <8 x i16> %6, i16 %b4, i32 6
  %8 = insertelement <8 x i16> %7, i16 %b6, i32 7
  %9 = insertelement <8 x i16> poison, i16 %a1, i32 0
  %10 = insertelement <8 x i16> %9, i16 %a3, i32 1
  %11 = insertelement <8 x i16> %10, i16 %a5, i32 2
  %12 = insertelement <8 x i16> %11, i16 %a7, i32 3
  %13 = insertelement <8 x i16> %12, i16 %b1, i32 4
  %14 = insertelement <8 x i16> %13, i16 %b3, i32 5
  %15 = insertelement <8 x i16> %14, i16 %b5, i32 6
  %16 = insertelement <8 x i16> %15, i16 %b7, i32 7
  %17 = add <8 x i16> %8, %16
  ret <8 x i16> %17
}
=>
define <8 x i16> @test_v8i16(<8 x i16> %a, <8 x i16> %b) {
%0:
  %1 = shufflevector <8 x i16> %a, <8 x i16> %b, 0, 2, 4, 6, 8, 10, 12, 14
  %2 = shufflevector <8 x i16> %a, <8 x i16> %b, 1, 3, 5, 7, 9, 11, 13, 15
  %3 = add <8 x i16> %1, %2
  ret <8 x i16> %3
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 30. PassManager<Function> : Skipping NOP
-- 31. PassManager<Function> : Skipping NOP
-- 32. SLPVectorizerPass

----------------------------------------
define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) {
%0:
  %x0 = extractelement <4 x float> %f, i64 0
  %x1 = extractelement <4 x float> %f, i64 1
  %add01 = fadd float %x0, %x1
  store float %add01, ptr %p, align 4
  %x2 = extractelement <4 x float> %f, i64 2
  %x3 = extractelement <4 x float> %f, i64 3
  %add23 = fadd float %x2, %x3
  %p23 = gep inbounds ptr %p, 4 x i64 1
  store float %add23, ptr %p23, align 4
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 33. SLPVectorizerPass

----------------------------------------
define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) {
%0:
  %x0 = extractelement <4 x float> %f, i64 0
  %x1 = extractelement <4 x float> %f, i64 1
  %add01 = fadd float %x0, %x1
  store float %add01, ptr %p, align 4
  %x2 = extractelement <4 x float> %f, i64 2
  %x3 = extractelement <4 x float> %f, i64 3
  %add23 = fadd float %x2, %x3
  %p23 = gep inbounds ptr %p, 4 x i64 1
  store float %add23, ptr %p23, align 4
  ret void
}
=>
define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) {
%0:
  %x0 = extractelement <4 x float> %f, i64 0
  %x1 = extractelement <4 x float> %f, i64 1
  %x2 = extractelement <4 x float> %f, i64 2
  %x3 = extractelement <4 x float> %f, i64 3
  %1 = insertelement <2 x float> poison, float %x1, i32 0
  %2 = insertelement <2 x float> %1, float %x2, i32 1
  %3 = insertelement <2 x float> poison, float %x0, i32 0
  %4 = insertelement <2 x float> %3, float %x3, i32 1
  %5 = fadd <2 x float> %2, %4
  store <2 x float> %5, ptr %p, align 4
  ret void
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 34. InstCombinePass

----------------------------------------
define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) {
%0:
  %x0 = extractelement <4 x float> %f, i64 0
  %x1 = extractelement <4 x float> %f, i64 1
  %x2 = extractelement <4 x float> %f, i64 2
  %x3 = extractelement <4 x float> %f, i64 3
  %1 = insertelement <2 x float> poison, float %x1, i32 0
  %2 = insertelement <2 x float> %1, float %x2, i32 1
  %3 = insertelement <2 x float> poison, float %x0, i32 0
  %4 = insertelement <2 x float> %3, float %x3, i32 1
  %5 = fadd <2 x float> %2, %4
  store <2 x float> %5, ptr %p, align 4
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 35. InstCombinePass

----------------------------------------
define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) {
%0:
  %x0 = extractelement <4 x float> %f, i64 0
  %x1 = extractelement <4 x float> %f, i64 1
  %x2 = extractelement <4 x float> %f, i64 2
  %x3 = extractelement <4 x float> %f, i64 3
  %1 = insertelement <2 x float> poison, float %x1, i32 0
  %2 = insertelement <2 x float> %1, float %x2, i32 1
  %3 = insertelement <2 x float> poison, float %x0, i32 0
  %4 = insertelement <2 x float> %3, float %x3, i32 1
  %5 = fadd <2 x float> %2, %4
  store <2 x float> %5, ptr %p, align 4
  ret void
}
=>
define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) {
%0:
  %1 = shufflevector <4 x float> %f, <4 x float> undef, 1, 2
  %2 = shufflevector <4 x float> %f, <4 x float> undef, 0, 3
  %3 = fadd <2 x float> %1, %2
  store <2 x float> %3, ptr %p, align 4
  ret void
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 36. PassManager<Function> : Skipping NOP
-- 37. PassManager<Function> : Skipping NOP
-- 38. SLPVectorizerPass

----------------------------------------
define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i32 0
  %a1 = extractelement <4 x double> %a, i32 1
  %a2 = extractelement <4 x double> %a, i32 2
  %a3 = extractelement <4 x double> %a, i32 3
  %b0 = extractelement <4 x double> %b, i32 0
  %b1 = extractelement <4 x double> %b, i32 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %r0 = fadd double %a0, %a1
  %r1 = fadd double %b0, %b1
  %r2 = fadd double %a2, %a3
  %r3 = fadd double %b2, %b3
  %r00 = insertelement <4 x double> undef, double %r0, i32 0
  %r01 = insertelement <4 x double> %r00, double %r1, i32 1
  %r02 = insertelement <4 x double> %r01, double %r2, i32 2
  %r03 = insertelement <4 x double> %r02, double %r3, i32 3
  ret <4 x double> %r03
}
Transformation seems to be correct! (syntactically equal)

-- 39. SLPVectorizerPass

----------------------------------------
define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i32 0
  %a1 = extractelement <4 x double> %a, i32 1
  %a2 = extractelement <4 x double> %a, i32 2
  %a3 = extractelement <4 x double> %a, i32 3
  %b0 = extractelement <4 x double> %b, i32 0
  %b1 = extractelement <4 x double> %b, i32 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %r0 = fadd double %a0, %a1
  %r1 = fadd double %b0, %b1
  %r2 = fadd double %a2, %a3
  %r3 = fadd double %b2, %b3
  %r00 = insertelement <4 x double> undef, double %r0, i32 0
  %r01 = insertelement <4 x double> %r00, double %r1, i32 1
  %r02 = insertelement <4 x double> %r01, double %r2, i32 2
  %r03 = insertelement <4 x double> %r02, double %r3, i32 3
  ret <4 x double> %r03
}
=>
define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i32 0
  %a1 = extractelement <4 x double> %a, i32 1
  %a2 = extractelement <4 x double> %a, i32 2
  %a3 = extractelement <4 x double> %a, i32 3
  %b0 = extractelement <4 x double> %b, i32 0
  %b1 = extractelement <4 x double> %b, i32 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  %6 = insertelement <2 x double> poison, double %a2, i32 0
  %7 = insertelement <2 x double> %6, double %b2, i32 1
  %8 = insertelement <2 x double> poison, double %a3, i32 0
  %9 = insertelement <2 x double> %8, double %b3, i32 1
  %10 = fadd <2 x double> %7, %9
  %11 = shufflevector <2 x double> %5, <2 x double> poison, 0, 1, 4294967295, 4294967295
  %12 = shufflevector <2 x double> %10, <2 x double> poison, 0, 1, 4294967295, 4294967295
  %r031 = shufflevector <4 x double> %11, <4 x double> %12, 0, 1, 4, 5
  ret <4 x double> %r031
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 40. InstCombinePass

----------------------------------------
define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i32 0
  %a1 = extractelement <4 x double> %a, i32 1
  %a2 = extractelement <4 x double> %a, i32 2
  %a3 = extractelement <4 x double> %a, i32 3
  %b0 = extractelement <4 x double> %b, i32 0
  %b1 = extractelement <4 x double> %b, i32 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  %6 = insertelement <2 x double> poison, double %a2, i32 0
  %7 = insertelement <2 x double> %6, double %b2, i32 1
  %8 = insertelement <2 x double> poison, double %a3, i32 0
  %9 = insertelement <2 x double> %8, double %b3, i32 1
  %10 = fadd <2 x double> %7, %9
  %11 = shufflevector <2 x double> %5, <2 x double> poison, 0, 1, 4294967295, 4294967295
  %12 = shufflevector <2 x double> %10, <2 x double> poison, 0, 1, 4294967295, 4294967295
  %r031 = shufflevector <4 x double> %11, <4 x double> %12, 0, 1, 4, 5
  ret <4 x double> %r031
}
Transformation seems to be correct! (syntactically equal)

-- 41. InstCombinePass

----------------------------------------
define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i32 0
  %a1 = extractelement <4 x double> %a, i32 1
  %a2 = extractelement <4 x double> %a, i32 2
  %a3 = extractelement <4 x double> %a, i32 3
  %b0 = extractelement <4 x double> %b, i32 0
  %b1 = extractelement <4 x double> %b, i32 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  %6 = insertelement <2 x double> poison, double %a2, i32 0
  %7 = insertelement <2 x double> %6, double %b2, i32 1
  %8 = insertelement <2 x double> poison, double %a3, i32 0
  %9 = insertelement <2 x double> %8, double %b3, i32 1
  %10 = fadd <2 x double> %7, %9
  %11 = shufflevector <2 x double> %5, <2 x double> poison, 0, 1, 4294967295, 4294967295
  %12 = shufflevector <2 x double> %10, <2 x double> poison, 0, 1, 4294967295, 4294967295
  %r031 = shufflevector <4 x double> %11, <4 x double> %12, 0, 1, 4, 5
  ret <4 x double> %r031
}
=>
define <4 x double> @test_v4f64(<4 x double> %a, <4 x double> %b) {
%0:
  %1 = shufflevector <4 x double> %a, <4 x double> %b, 0, 4
  %2 = shufflevector <4 x double> %a, <4 x double> %b, 1, 5
  %3 = fadd <2 x double> %1, %2
  %4 = shufflevector <4 x double> %a, <4 x double> %b, 2, 6
  %5 = shufflevector <4 x double> %a, <4 x double> %b, 3, 7
  %6 = fadd <2 x double> %4, %5
  %r031 = shufflevector <2 x double> %3, <2 x double> %6, 0, 1, 2, 3
  ret <4 x double> %r031
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 42. PassManager<Function> : Skipping NOP
-- 43. PassManager<Function> : Skipping NOP
-- 44. SLPVectorizerPass

----------------------------------------
define <4 x double> @test_v4f64_partial_swizzle(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i64 0
  %a1 = extractelement <4 x double> %a, i64 1
  %b0 = extractelement <4 x double> %b, i64 0
  %b1 = extractelement <4 x double> %b, i64 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %r0 = fadd double %a0, %a1
  %r2 = fadd double %b0, %b1
  %r3 = fadd double %b2, %b3
  %r00 = insertelement <4 x double> undef, double %r0, i32 0
  %r02 = insertelement <4 x double> %r00, double %r2, i32 2
  %r03 = insertelement <4 x double> %r02, double %r3, i32 3
  ret <4 x double> %r03
}
Transformation seems to be correct! (syntactically equal)

-- 45. SLPVectorizerPass

----------------------------------------
define <4 x double> @test_v4f64_partial_swizzle(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i64 0
  %a1 = extractelement <4 x double> %a, i64 1
  %b0 = extractelement <4 x double> %b, i64 0
  %b1 = extractelement <4 x double> %b, i64 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %r0 = fadd double %a0, %a1
  %r2 = fadd double %b0, %b1
  %r3 = fadd double %b2, %b3
  %r00 = insertelement <4 x double> undef, double %r0, i32 0
  %r02 = insertelement <4 x double> %r00, double %r2, i32 2
  %r03 = insertelement <4 x double> %r02, double %r3, i32 3
  ret <4 x double> %r03
}
=>
define <4 x double> @test_v4f64_partial_swizzle(<4 x double> %a, <4 x double> %b) {
%0:
  %a0 = extractelement <4 x double> %a, i64 0
  %a1 = extractelement <4 x double> %a, i64 1
  %b0 = extractelement <4 x double> %b, i64 0
  %b1 = extractelement <4 x double> %b, i64 1
  %b2 = extractelement <4 x double> %b, i32 2
  %b3 = extractelement <4 x double> %b, i32 3
  %1 = insertelement <2 x double> poison, double %a0, i32 0
  %2 = insertelement <2 x double> %1, double %b0, i32 1
  %3 = insertelement <2 x double> poison, double %a1, i32 0
  %4 = insertelement <2 x double> %3, double %b1, i32 1
  %5 = fadd <2 x double> %2, %4
  %r3 = fadd double %b2, %b3
  %6 = shufflevector <2 x double> %5, <2 x double> poison, 0, 4294967295, 1, 4294967295
  %r03 = insertelement <4 x double> %6, double %r3, i32 3
  ret <4 x double> %r03
}
Transformation doesn't verify! (unsound)
ERROR: Target is more poisonous than source

Example:
<4 x double> %a = < poison, poison, poison, poison >
<4 x double> %b = < poison, poison, poison, poison >

Source:
double %a0 = poison
double %a1 = poison
double %b0 = poison
double %b1 = poison
double %b2 = poison
double %b3 = poison
double %r0 = poison
double %r2 = poison
double %r3 = poison
<4 x double> %r00 = < poison, #x0000000000000000 (+0.0)	[based on undef value], #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
<4 x double> %r02 = < poison, #x0000000000000000 (+0.0), poison, #x0000000000000000 (+0.0) >
<4 x double> %r03 = < poison, #x0000000000000000 (+0.0), poison, poison >

Target:
double %a0 = poison
double %a1 = poison
double %b0 = poison
double %b1 = poison
double %b2 = poison
double %b3 = poison
<2 x double> %1 = < poison, poison >
<2 x double> %2 = < poison, poison >
<2 x double> %3 = < poison, poison >
<2 x double> %4 = < poison, poison >
<2 x double> %5 = < poison, poison >
double %r3 = poison
<4 x double> %6 = < poison, poison, poison, poison >
<4 x double> %r03 = < poison, poison, poison, poison >
Source value: < poison, #x0000000000000000 (+0.0), poison, poison >
Target value: < poison, poison, poison, poison >

Pass: SLPVectorizerPass
Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-mtriple=x86_64-unknown' '-passes=slp-vectorizer,instcombine' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_54TTGWm7_92by.bc"


------------------- SMT STATS -------------------
Num queries: 129
Num invalid: 0
Num skips:   0
Num trivial: 41 (24.1%)
Num timeout: 14 (10.9%)
Num errors:  0 (0.0%)
Num SAT:     95 (73.6%)
Num UNSAT:   20 (15.5%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/build/opt-alive.sh -mtriple=x86_64-unknown -passes=slp-vectorizer,instcombine -S
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/hadd.ll --check-prefix=CHECK --check-prefix=SSE

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/hadd.ll --check-prefix=CHECK --check-prefix=SSE

 

<-- Back