Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i64_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %cvt0 = sitofp i64 %ld0 to double, exceptions=ignore %cvt1 = sitofp i64 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 3. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i64_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %cvt0 = sitofp i64 %ld0 to double, exceptions=ignore %cvt1 = sitofp i64 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i64_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %cvt0 = sitofp i64 %ld0 to double, exceptions=ignore %cvt1 = sitofp i64 %ld1 to double, exceptions=ignore %cvt2 = sitofp i64 %ld2 to double, exceptions=ignore %cvt3 = sitofp i64 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 7. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i64_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %cvt0 = sitofp i64 %ld0 to double, exceptions=ignore %cvt1 = sitofp i64 %ld1 to double, exceptions=ignore %cvt2 = sitofp i64 %ld2 to double, exceptions=ignore %cvt3 = sitofp i64 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i64_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %__constexpr_4 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 4 %ld4 = load i64, ptr %__constexpr_4, align 32 %__constexpr_5 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 5 %ld5 = load i64, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 6 %ld6 = load i64, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 7 %ld7 = load i64, ptr %__constexpr_7, align 8 %cvt0 = sitofp i64 %ld0 to double, exceptions=ignore %cvt1 = sitofp i64 %ld1 to double, exceptions=ignore %cvt2 = sitofp i64 %ld2 to double, exceptions=ignore %cvt3 = sitofp i64 %ld3 to double, exceptions=ignore %cvt4 = sitofp i64 %ld4 to double, exceptions=ignore %cvt5 = sitofp i64 %ld5 to double, exceptions=ignore %cvt6 = sitofp i64 %ld6 to double, exceptions=ignore %cvt7 = sitofp i64 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 11. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i64_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %__constexpr_4 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 4 %ld4 = load i64, ptr %__constexpr_4, align 32 %__constexpr_5 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 5 %ld5 = load i64, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 6 %ld6 = load i64, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 7 %ld7 = load i64, ptr %__constexpr_7, align 8 %cvt0 = sitofp i64 %ld0 to double, exceptions=ignore %cvt1 = sitofp i64 %ld1 to double, exceptions=ignore %cvt2 = sitofp i64 %ld2 to double, exceptions=ignore %cvt3 = sitofp i64 %ld3 to double, exceptions=ignore %cvt4 = sitofp i64 %ld4 to double, exceptions=ignore %cvt5 = sitofp i64 %ld5 to double, exceptions=ignore %cvt6 = sitofp i64 %ld6 to double, exceptions=ignore %cvt7 = sitofp i64 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i32_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %cvt0 = sitofp i32 %ld0 to double, exceptions=ignore %cvt1 = sitofp i32 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 15. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i32_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %cvt0 = sitofp i32 %ld0 to double, exceptions=ignore %cvt1 = sitofp i32 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } => @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i32_2f64() { %0: %__constexpr_0 = bitcast ptr @src32 to ptr %1 = load <2 x i32>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i32> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i32_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %cvt0 = sitofp i32 %ld0 to double, exceptions=ignore %cvt1 = sitofp i32 %ld1 to double, exceptions=ignore %cvt2 = sitofp i32 %ld2 to double, exceptions=ignore %cvt3 = sitofp i32 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 19. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i32_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %cvt0 = sitofp i32 %ld0 to double, exceptions=ignore %cvt1 = sitofp i32 %ld1 to double, exceptions=ignore %cvt2 = sitofp i32 %ld2 to double, exceptions=ignore %cvt3 = sitofp i32 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } => @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i32_4f64() { %0: %__constexpr_0 = bitcast ptr @src32 to ptr %1 = load <2 x i32>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i32> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <2 x i32>, ptr %__constexpr_2, align 8 %4 = sitofp <2 x i32> %3 to <2 x double>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <2 x double> %4, ptr %__constexpr_4, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i32_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %__constexpr_4 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %ld4 = load i32, ptr %__constexpr_4, align 16 %__constexpr_5 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 5 %ld5 = load i32, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %ld6 = load i32, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 7 %ld7 = load i32, ptr %__constexpr_7, align 4 %cvt0 = sitofp i32 %ld0 to double, exceptions=ignore %cvt1 = sitofp i32 %ld1 to double, exceptions=ignore %cvt2 = sitofp i32 %ld2 to double, exceptions=ignore %cvt3 = sitofp i32 %ld3 to double, exceptions=ignore %cvt4 = sitofp i32 %ld4 to double, exceptions=ignore %cvt5 = sitofp i32 %ld5 to double, exceptions=ignore %cvt6 = sitofp i32 %ld6 to double, exceptions=ignore %cvt7 = sitofp i32 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 23. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i32_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %__constexpr_4 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %ld4 = load i32, ptr %__constexpr_4, align 16 %__constexpr_5 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 5 %ld5 = load i32, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %ld6 = load i32, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 7 %ld7 = load i32, ptr %__constexpr_7, align 4 %cvt0 = sitofp i32 %ld0 to double, exceptions=ignore %cvt1 = sitofp i32 %ld1 to double, exceptions=ignore %cvt2 = sitofp i32 %ld2 to double, exceptions=ignore %cvt3 = sitofp i32 %ld3 to double, exceptions=ignore %cvt4 = sitofp i32 %ld4 to double, exceptions=ignore %cvt5 = sitofp i32 %ld5 to double, exceptions=ignore %cvt6 = sitofp i32 %ld6 to double, exceptions=ignore %cvt7 = sitofp i32 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } => @src32 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i32_8f64() { %0: %__constexpr_0 = bitcast ptr @src32 to ptr %1 = load <2 x i32>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i32> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <2 x i32>, ptr %__constexpr_2, align 8 %4 = sitofp <2 x i32> %3 to <2 x double>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <2 x double> %4, ptr %__constexpr_4, align 16 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %__constexpr_6 = bitcast ptr %__constexpr_7 to ptr %5 = load <2 x i32>, ptr %__constexpr_6, align 16 %6 = sitofp <2 x i32> %5 to <2 x double>, exceptions=ignore %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 %__constexpr_8 = bitcast ptr %__constexpr_9 to ptr store <2 x double> %6, ptr %__constexpr_8, align 32 %__constexpr_11 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %__constexpr_10 = bitcast ptr %__constexpr_11 to ptr %7 = load <2 x i32>, ptr %__constexpr_10, align 8 %8 = sitofp <2 x i32> %7 to <2 x double>, exceptions=ignore %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 %__constexpr_12 = bitcast ptr %__constexpr_13 to ptr store <2 x double> %8, ptr %__constexpr_12, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i16_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %cvt0 = sitofp i16 %ld0 to double, exceptions=ignore %cvt1 = sitofp i16 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 27. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i16_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %cvt0 = sitofp i16 %ld0 to double, exceptions=ignore %cvt1 = sitofp i16 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } => @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i16_2f64() { %0: %__constexpr_0 = bitcast ptr @src16 to ptr %1 = load <2 x i16>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i16> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 ret void } Transformation seems to be correct! -- 28. PassManager<Function> : Skipping NOP -- 29. PassManager<Function> : Skipping NOP -- 30. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i16_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %cvt0 = sitofp i16 %ld0 to double, exceptions=ignore %cvt1 = sitofp i16 %ld1 to double, exceptions=ignore %cvt2 = sitofp i16 %ld2 to double, exceptions=ignore %cvt3 = sitofp i16 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 31. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i16_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %cvt0 = sitofp i16 %ld0 to double, exceptions=ignore %cvt1 = sitofp i16 %ld1 to double, exceptions=ignore %cvt2 = sitofp i16 %ld2 to double, exceptions=ignore %cvt3 = sitofp i16 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } => @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i16_4f64() { %0: %__constexpr_0 = bitcast ptr @src16 to ptr %1 = load <2 x i16>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i16> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <2 x i16>, ptr %__constexpr_2, align 4 %4 = sitofp <2 x i16> %3 to <2 x double>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <2 x double> %4, ptr %__constexpr_4, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 32. PassManager<Function> : Skipping NOP -- 33. PassManager<Function> : Skipping NOP -- 34. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i16_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %__constexpr_4 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %ld4 = load i16, ptr %__constexpr_4, align 8 %__constexpr_5 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 5 %ld5 = load i16, ptr %__constexpr_5, align 2 %__constexpr_6 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %ld6 = load i16, ptr %__constexpr_6, align 4 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 7 %ld7 = load i16, ptr %__constexpr_7, align 2 %cvt0 = sitofp i16 %ld0 to double, exceptions=ignore %cvt1 = sitofp i16 %ld1 to double, exceptions=ignore %cvt2 = sitofp i16 %ld2 to double, exceptions=ignore %cvt3 = sitofp i16 %ld3 to double, exceptions=ignore %cvt4 = sitofp i16 %ld4 to double, exceptions=ignore %cvt5 = sitofp i16 %ld5 to double, exceptions=ignore %cvt6 = sitofp i16 %ld6 to double, exceptions=ignore %cvt7 = sitofp i16 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 35. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i16_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %__constexpr_4 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %ld4 = load i16, ptr %__constexpr_4, align 8 %__constexpr_5 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 5 %ld5 = load i16, ptr %__constexpr_5, align 2 %__constexpr_6 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %ld6 = load i16, ptr %__constexpr_6, align 4 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 7 %ld7 = load i16, ptr %__constexpr_7, align 2 %cvt0 = sitofp i16 %ld0 to double, exceptions=ignore %cvt1 = sitofp i16 %ld1 to double, exceptions=ignore %cvt2 = sitofp i16 %ld2 to double, exceptions=ignore %cvt3 = sitofp i16 %ld3 to double, exceptions=ignore %cvt4 = sitofp i16 %ld4 to double, exceptions=ignore %cvt5 = sitofp i16 %ld5 to double, exceptions=ignore %cvt6 = sitofp i16 %ld6 to double, exceptions=ignore %cvt7 = sitofp i16 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } => @src16 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i16_8f64() { %0: %__constexpr_0 = bitcast ptr @src16 to ptr %1 = load <2 x i16>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i16> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <2 x i16>, ptr %__constexpr_2, align 4 %4 = sitofp <2 x i16> %3 to <2 x double>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <2 x double> %4, ptr %__constexpr_4, align 16 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %__constexpr_6 = bitcast ptr %__constexpr_7 to ptr %5 = load <2 x i16>, ptr %__constexpr_6, align 8 %6 = sitofp <2 x i16> %5 to <2 x double>, exceptions=ignore %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 %__constexpr_8 = bitcast ptr %__constexpr_9 to ptr store <2 x double> %6, ptr %__constexpr_8, align 32 %__constexpr_11 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %__constexpr_10 = bitcast ptr %__constexpr_11 to ptr %7 = load <2 x i16>, ptr %__constexpr_10, align 4 %8 = sitofp <2 x i16> %7 to <2 x double>, exceptions=ignore %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 %__constexpr_12 = bitcast ptr %__constexpr_13 to ptr store <2 x double> %8, ptr %__constexpr_12, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 36. PassManager<Function> : Skipping NOP -- 37. PassManager<Function> : Skipping NOP -- 38. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i8_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %cvt0 = sitofp i8 %ld0 to double, exceptions=ignore %cvt1 = sitofp i8 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 39. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i8_2f64() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %cvt0 = sitofp i8 %ld0 to double, exceptions=ignore %cvt1 = sitofp i8 %ld1 to double, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_3, align 8 ret void } => @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_2i8_2f64() { %0: %__constexpr_0 = bitcast ptr @src8 to ptr %1 = load <2 x i8>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i8> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 ret void } Transformation seems to be correct! -- 40. PassManager<Function> : Skipping NOP -- 41. PassManager<Function> : Skipping NOP -- 42. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i8_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %cvt0 = sitofp i8 %ld0 to double, exceptions=ignore %cvt1 = sitofp i8 %ld1 to double, exceptions=ignore %cvt2 = sitofp i8 %ld2 to double, exceptions=ignore %cvt3 = sitofp i8 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 43. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i8_4f64() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %cvt0 = sitofp i8 %ld0 to double, exceptions=ignore %cvt1 = sitofp i8 %ld1 to double, exceptions=ignore %cvt2 = sitofp i8 %ld2 to double, exceptions=ignore %cvt3 = sitofp i8 %ld3 to double, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_7, align 8 ret void } => @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_4i8_4f64() { %0: %__constexpr_0 = bitcast ptr @src8 to ptr %1 = load <2 x i8>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i8> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <2 x i8>, ptr %__constexpr_2, align 2 %4 = sitofp <2 x i8> %3 to <2 x double>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <2 x double> %4, ptr %__constexpr_4, align 16 ret void } Transformation seems to be correct! -- 44. PassManager<Function> : Skipping NOP -- 45. PassManager<Function> : Skipping NOP -- 46. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i8_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %__constexpr_4 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %ld4 = load i8, ptr %__constexpr_4, align 4 %__constexpr_5 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 5 %ld5 = load i8, ptr %__constexpr_5, align 1 %__constexpr_6 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %ld6 = load i8, ptr %__constexpr_6, align 2 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 7 %ld7 = load i8, ptr %__constexpr_7, align 1 %cvt0 = sitofp i8 %ld0 to double, exceptions=ignore %cvt1 = sitofp i8 %ld1 to double, exceptions=ignore %cvt2 = sitofp i8 %ld2 to double, exceptions=ignore %cvt3 = sitofp i8 %ld3 to double, exceptions=ignore %cvt4 = sitofp i8 %ld4 to double, exceptions=ignore %cvt5 = sitofp i8 %ld5 to double, exceptions=ignore %cvt6 = sitofp i8 %ld6 to double, exceptions=ignore %cvt7 = sitofp i8 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 47. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i8_8f64() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %__constexpr_4 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %ld4 = load i8, ptr %__constexpr_4, align 4 %__constexpr_5 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 5 %ld5 = load i8, ptr %__constexpr_5, align 1 %__constexpr_6 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %ld6 = load i8, ptr %__constexpr_6, align 2 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 7 %ld7 = load i8, ptr %__constexpr_7, align 1 %cvt0 = sitofp i8 %ld0 to double, exceptions=ignore %cvt1 = sitofp i8 %ld1 to double, exceptions=ignore %cvt2 = sitofp i8 %ld2 to double, exceptions=ignore %cvt3 = sitofp i8 %ld3 to double, exceptions=ignore %cvt4 = sitofp i8 %ld4 to double, exceptions=ignore %cvt5 = sitofp i8 %ld5 to double, exceptions=ignore %cvt6 = sitofp i8 %ld6 to double, exceptions=ignore %cvt7 = sitofp i8 %ld7 to double, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 0 store double %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 1 store double %cvt1, ptr %__constexpr_9, align 8 %__constexpr_10 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 store double %cvt2, ptr %__constexpr_10, align 16 %__constexpr_11 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 3 store double %cvt3, ptr %__constexpr_11, align 8 %__constexpr_12 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 store double %cvt4, ptr %__constexpr_12, align 32 %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 5 store double %cvt5, ptr %__constexpr_13, align 8 %__constexpr_14 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 store double %cvt6, ptr %__constexpr_14, align 16 %__constexpr_15 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 7 store double %cvt7, ptr %__constexpr_15, align 8 ret void } => @src8 = global 64 bytes, align 64 @dst64 = global 64 bytes, align 64 define void @sitofp_8i8_8f64() { %0: %__constexpr_0 = bitcast ptr @src8 to ptr %1 = load <2 x i8>, ptr %__constexpr_0, align 64 %2 = sitofp <2 x i8> %1 to <2 x double>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst64 to ptr store <2 x double> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <2 x i8>, ptr %__constexpr_2, align 2 %4 = sitofp <2 x i8> %3 to <2 x double>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 2 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <2 x double> %4, ptr %__constexpr_4, align 16 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %__constexpr_6 = bitcast ptr %__constexpr_7 to ptr %5 = load <2 x i8>, ptr %__constexpr_6, align 4 %6 = sitofp <2 x i8> %5 to <2 x double>, exceptions=ignore %__constexpr_9 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 4 %__constexpr_8 = bitcast ptr %__constexpr_9 to ptr store <2 x double> %6, ptr %__constexpr_8, align 32 %__constexpr_11 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %__constexpr_10 = bitcast ptr %__constexpr_11 to ptr %7 = load <2 x i8>, ptr %__constexpr_10, align 2 %8 = sitofp <2 x i8> %7 to <2 x double>, exceptions=ignore %__constexpr_13 = gep inbounds ptr @dst64, 64 x i32 0, 8 x i64 6 %__constexpr_12 = bitcast ptr %__constexpr_13 to ptr store <2 x double> %8, ptr %__constexpr_12, align 16 ret void } Transformation seems to be correct! -- 48. PassManager<Function> : Skipping NOP -- 49. PassManager<Function> : Skipping NOP -- 50. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_2i64_2f32() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %cvt0 = sitofp i64 %ld0 to float, exceptions=ignore %cvt1 = sitofp i64 %ld1 to float, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_3, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 51. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_2i64_2f32() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %cvt0 = sitofp i64 %ld0 to float, exceptions=ignore %cvt1 = sitofp i64 %ld1 to float, exceptions=ignore %__constexpr_2 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_2, align 64 %__constexpr_3 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_3, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 52. PassManager<Function> : Skipping NOP -- 53. PassManager<Function> : Skipping NOP -- 54. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i64_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %cvt0 = sitofp i64 %ld0 to float, exceptions=ignore %cvt1 = sitofp i64 %ld1 to float, exceptions=ignore %cvt2 = sitofp i64 %ld2 to float, exceptions=ignore %cvt3 = sitofp i64 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 55. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i64_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %cvt0 = sitofp i64 %ld0 to float, exceptions=ignore %cvt1 = sitofp i64 %ld1 to float, exceptions=ignore %cvt2 = sitofp i64 %ld2 to float, exceptions=ignore %cvt3 = sitofp i64 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } => @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i64_4f32() { %0: %__constexpr_0 = bitcast ptr @src64 to ptr %1 = load <4 x i64>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i64> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 56. PassManager<Function> : Skipping NOP -- 57. PassManager<Function> : Skipping NOP -- 58. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i64_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %__constexpr_4 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 4 %ld4 = load i64, ptr %__constexpr_4, align 32 %__constexpr_5 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 5 %ld5 = load i64, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 6 %ld6 = load i64, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 7 %ld7 = load i64, ptr %__constexpr_7, align 8 %cvt0 = sitofp i64 %ld0 to float, exceptions=ignore %cvt1 = sitofp i64 %ld1 to float, exceptions=ignore %cvt2 = sitofp i64 %ld2 to float, exceptions=ignore %cvt3 = sitofp i64 %ld3 to float, exceptions=ignore %cvt4 = sitofp i64 %ld4 to float, exceptions=ignore %cvt5 = sitofp i64 %ld5 to float, exceptions=ignore %cvt6 = sitofp i64 %ld6 to float, exceptions=ignore %cvt7 = sitofp i64 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 59. SLPVectorizerPass ---------------------------------------- @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i64_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 0 %ld0 = load i64, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 1 %ld1 = load i64, ptr %__constexpr_1, align 8 %__constexpr_2 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 2 %ld2 = load i64, ptr %__constexpr_2, align 16 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 3 %ld3 = load i64, ptr %__constexpr_3, align 8 %__constexpr_4 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 4 %ld4 = load i64, ptr %__constexpr_4, align 32 %__constexpr_5 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 5 %ld5 = load i64, ptr %__constexpr_5, align 8 %__constexpr_6 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 6 %ld6 = load i64, ptr %__constexpr_6, align 16 %__constexpr_7 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 7 %ld7 = load i64, ptr %__constexpr_7, align 8 %cvt0 = sitofp i64 %ld0 to float, exceptions=ignore %cvt1 = sitofp i64 %ld1 to float, exceptions=ignore %cvt2 = sitofp i64 %ld2 to float, exceptions=ignore %cvt3 = sitofp i64 %ld3 to float, exceptions=ignore %cvt4 = sitofp i64 %ld4 to float, exceptions=ignore %cvt5 = sitofp i64 %ld5 to float, exceptions=ignore %cvt6 = sitofp i64 %ld6 to float, exceptions=ignore %cvt7 = sitofp i64 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } => @src64 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i64_8f32() { %0: %__constexpr_0 = bitcast ptr @src64 to ptr %1 = load <4 x i64>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i64> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src64, 64 x i32 0, 8 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i64>, ptr %__constexpr_2, align 32 %4 = sitofp <4 x i64> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 60. PassManager<Function> : Skipping NOP -- 61. PassManager<Function> : Skipping NOP -- 62. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i32_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %cvt0 = sitofp i32 %ld0 to float, exceptions=ignore %cvt1 = sitofp i32 %ld1 to float, exceptions=ignore %cvt2 = sitofp i32 %ld2 to float, exceptions=ignore %cvt3 = sitofp i32 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 63. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i32_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %cvt0 = sitofp i32 %ld0 to float, exceptions=ignore %cvt1 = sitofp i32 %ld1 to float, exceptions=ignore %cvt2 = sitofp i32 %ld2 to float, exceptions=ignore %cvt3 = sitofp i32 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } => @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i32_4f32() { %0: %__constexpr_0 = bitcast ptr @src32 to ptr %1 = load <4 x i32>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i32> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 64. PassManager<Function> : Skipping NOP -- 65. PassManager<Function> : Skipping NOP -- 66. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i32_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %__constexpr_4 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %ld4 = load i32, ptr %__constexpr_4, align 16 %__constexpr_5 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 5 %ld5 = load i32, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %ld6 = load i32, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 7 %ld7 = load i32, ptr %__constexpr_7, align 4 %cvt0 = sitofp i32 %ld0 to float, exceptions=ignore %cvt1 = sitofp i32 %ld1 to float, exceptions=ignore %cvt2 = sitofp i32 %ld2 to float, exceptions=ignore %cvt3 = sitofp i32 %ld3 to float, exceptions=ignore %cvt4 = sitofp i32 %ld4 to float, exceptions=ignore %cvt5 = sitofp i32 %ld5 to float, exceptions=ignore %cvt6 = sitofp i32 %ld6 to float, exceptions=ignore %cvt7 = sitofp i32 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 67. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i32_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %__constexpr_4 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %ld4 = load i32, ptr %__constexpr_4, align 16 %__constexpr_5 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 5 %ld5 = load i32, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %ld6 = load i32, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 7 %ld7 = load i32, ptr %__constexpr_7, align 4 %cvt0 = sitofp i32 %ld0 to float, exceptions=ignore %cvt1 = sitofp i32 %ld1 to float, exceptions=ignore %cvt2 = sitofp i32 %ld2 to float, exceptions=ignore %cvt3 = sitofp i32 %ld3 to float, exceptions=ignore %cvt4 = sitofp i32 %ld4 to float, exceptions=ignore %cvt5 = sitofp i32 %ld5 to float, exceptions=ignore %cvt6 = sitofp i32 %ld6 to float, exceptions=ignore %cvt7 = sitofp i32 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } => @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i32_8f32() { %0: %__constexpr_0 = bitcast ptr @src32 to ptr %1 = load <4 x i32>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i32> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i32>, ptr %__constexpr_2, align 16 %4 = sitofp <4 x i32> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 68. PassManager<Function> : Skipping NOP -- 69. PassManager<Function> : Skipping NOP -- 70. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i32_16f32() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %__constexpr_4 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %ld4 = load i32, ptr %__constexpr_4, align 16 %__constexpr_5 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 5 %ld5 = load i32, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %ld6 = load i32, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 7 %ld7 = load i32, ptr %__constexpr_7, align 4 %__constexpr_8 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 8 %ld8 = load i32, ptr %__constexpr_8, align 32 %__constexpr_9 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 9 %ld9 = load i32, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 10 %ld10 = load i32, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 11 %ld11 = load i32, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 12 %ld12 = load i32, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 13 %ld13 = load i32, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 14 %ld14 = load i32, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 15 %ld15 = load i32, ptr %__constexpr_15, align 4 %cvt0 = sitofp i32 %ld0 to float, exceptions=ignore %cvt1 = sitofp i32 %ld1 to float, exceptions=ignore %cvt2 = sitofp i32 %ld2 to float, exceptions=ignore %cvt3 = sitofp i32 %ld3 to float, exceptions=ignore %cvt4 = sitofp i32 %ld4 to float, exceptions=ignore %cvt5 = sitofp i32 %ld5 to float, exceptions=ignore %cvt6 = sitofp i32 %ld6 to float, exceptions=ignore %cvt7 = sitofp i32 %ld7 to float, exceptions=ignore %cvt8 = sitofp i32 %ld8 to float, exceptions=ignore %cvt9 = sitofp i32 %ld9 to float, exceptions=ignore %cvt10 = sitofp i32 %ld10 to float, exceptions=ignore %cvt11 = sitofp i32 %ld11 to float, exceptions=ignore %cvt12 = sitofp i32 %ld12 to float, exceptions=ignore %cvt13 = sitofp i32 %ld13 to float, exceptions=ignore %cvt14 = sitofp i32 %ld14 to float, exceptions=ignore %cvt15 = sitofp i32 %ld15 to float, exceptions=ignore %__constexpr_16 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_16, align 64 %__constexpr_17 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_17, align 4 %__constexpr_18 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_18, align 8 %__constexpr_19 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_19, align 4 %__constexpr_20 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_20, align 16 %__constexpr_21 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_21, align 4 %__constexpr_22 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_22, align 8 %__constexpr_23 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_23, align 4 %__constexpr_24 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 store float %cvt8, ptr %__constexpr_24, align 32 %__constexpr_25 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 9 store float %cvt9, ptr %__constexpr_25, align 4 %__constexpr_26 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 10 store float %cvt10, ptr %__constexpr_26, align 8 %__constexpr_27 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 11 store float %cvt11, ptr %__constexpr_27, align 4 %__constexpr_28 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 store float %cvt12, ptr %__constexpr_28, align 16 %__constexpr_29 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 13 store float %cvt13, ptr %__constexpr_29, align 4 %__constexpr_30 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 14 store float %cvt14, ptr %__constexpr_30, align 8 %__constexpr_31 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 15 store float %cvt15, ptr %__constexpr_31, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 71. SLPVectorizerPass ---------------------------------------- @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i32_16f32() { %0: %__constexpr_0 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 0 %ld0 = load i32, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 1 %ld1 = load i32, ptr %__constexpr_1, align 4 %__constexpr_2 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 2 %ld2 = load i32, ptr %__constexpr_2, align 8 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 3 %ld3 = load i32, ptr %__constexpr_3, align 4 %__constexpr_4 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %ld4 = load i32, ptr %__constexpr_4, align 16 %__constexpr_5 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 5 %ld5 = load i32, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 6 %ld6 = load i32, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 7 %ld7 = load i32, ptr %__constexpr_7, align 4 %__constexpr_8 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 8 %ld8 = load i32, ptr %__constexpr_8, align 32 %__constexpr_9 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 9 %ld9 = load i32, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 10 %ld10 = load i32, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 11 %ld11 = load i32, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 12 %ld12 = load i32, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 13 %ld13 = load i32, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 14 %ld14 = load i32, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 15 %ld15 = load i32, ptr %__constexpr_15, align 4 %cvt0 = sitofp i32 %ld0 to float, exceptions=ignore %cvt1 = sitofp i32 %ld1 to float, exceptions=ignore %cvt2 = sitofp i32 %ld2 to float, exceptions=ignore %cvt3 = sitofp i32 %ld3 to float, exceptions=ignore %cvt4 = sitofp i32 %ld4 to float, exceptions=ignore %cvt5 = sitofp i32 %ld5 to float, exceptions=ignore %cvt6 = sitofp i32 %ld6 to float, exceptions=ignore %cvt7 = sitofp i32 %ld7 to float, exceptions=ignore %cvt8 = sitofp i32 %ld8 to float, exceptions=ignore %cvt9 = sitofp i32 %ld9 to float, exceptions=ignore %cvt10 = sitofp i32 %ld10 to float, exceptions=ignore %cvt11 = sitofp i32 %ld11 to float, exceptions=ignore %cvt12 = sitofp i32 %ld12 to float, exceptions=ignore %cvt13 = sitofp i32 %ld13 to float, exceptions=ignore %cvt14 = sitofp i32 %ld14 to float, exceptions=ignore %cvt15 = sitofp i32 %ld15 to float, exceptions=ignore %__constexpr_16 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_16, align 64 %__constexpr_17 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_17, align 4 %__constexpr_18 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_18, align 8 %__constexpr_19 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_19, align 4 %__constexpr_20 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_20, align 16 %__constexpr_21 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_21, align 4 %__constexpr_22 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_22, align 8 %__constexpr_23 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_23, align 4 %__constexpr_24 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 store float %cvt8, ptr %__constexpr_24, align 32 %__constexpr_25 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 9 store float %cvt9, ptr %__constexpr_25, align 4 %__constexpr_26 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 10 store float %cvt10, ptr %__constexpr_26, align 8 %__constexpr_27 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 11 store float %cvt11, ptr %__constexpr_27, align 4 %__constexpr_28 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 store float %cvt12, ptr %__constexpr_28, align 16 %__constexpr_29 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 13 store float %cvt13, ptr %__constexpr_29, align 4 %__constexpr_30 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 14 store float %cvt14, ptr %__constexpr_30, align 8 %__constexpr_31 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 15 store float %cvt15, ptr %__constexpr_31, align 4 ret void } => @src32 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i32_16f32() { %0: %__constexpr_0 = bitcast ptr @src32 to ptr %1 = load <4 x i32>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i32> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i32>, ptr %__constexpr_2, align 16 %4 = sitofp <4 x i32> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 %__constexpr_7 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 8 %__constexpr_6 = bitcast ptr %__constexpr_7 to ptr %5 = load <4 x i32>, ptr %__constexpr_6, align 32 %6 = sitofp <4 x i32> %5 to <4 x float>, exceptions=ignore %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 %__constexpr_8 = bitcast ptr %__constexpr_9 to ptr store <4 x float> %6, ptr %__constexpr_8, align 32 %__constexpr_11 = gep inbounds ptr @src32, 64 x i32 0, 4 x i64 12 %__constexpr_10 = bitcast ptr %__constexpr_11 to ptr %7 = load <4 x i32>, ptr %__constexpr_10, align 16 %8 = sitofp <4 x i32> %7 to <4 x float>, exceptions=ignore %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 %__constexpr_12 = bitcast ptr %__constexpr_13 to ptr store <4 x float> %8, ptr %__constexpr_12, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 72. PassManager<Function> : Skipping NOP -- 73. PassManager<Function> : Skipping NOP -- 74. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i16_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %cvt0 = sitofp i16 %ld0 to float, exceptions=ignore %cvt1 = sitofp i16 %ld1 to float, exceptions=ignore %cvt2 = sitofp i16 %ld2 to float, exceptions=ignore %cvt3 = sitofp i16 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 75. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i16_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %cvt0 = sitofp i16 %ld0 to float, exceptions=ignore %cvt1 = sitofp i16 %ld1 to float, exceptions=ignore %cvt2 = sitofp i16 %ld2 to float, exceptions=ignore %cvt3 = sitofp i16 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } => @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i16_4f32() { %0: %__constexpr_0 = bitcast ptr @src16 to ptr %1 = load <4 x i16>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i16> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 ret void } Transformation seems to be correct! -- 76. PassManager<Function> : Skipping NOP -- 77. PassManager<Function> : Skipping NOP -- 78. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i16_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %__constexpr_4 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %ld4 = load i16, ptr %__constexpr_4, align 8 %__constexpr_5 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 5 %ld5 = load i16, ptr %__constexpr_5, align 2 %__constexpr_6 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %ld6 = load i16, ptr %__constexpr_6, align 4 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 7 %ld7 = load i16, ptr %__constexpr_7, align 2 %cvt0 = sitofp i16 %ld0 to float, exceptions=ignore %cvt1 = sitofp i16 %ld1 to float, exceptions=ignore %cvt2 = sitofp i16 %ld2 to float, exceptions=ignore %cvt3 = sitofp i16 %ld3 to float, exceptions=ignore %cvt4 = sitofp i16 %ld4 to float, exceptions=ignore %cvt5 = sitofp i16 %ld5 to float, exceptions=ignore %cvt6 = sitofp i16 %ld6 to float, exceptions=ignore %cvt7 = sitofp i16 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 79. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i16_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %__constexpr_4 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %ld4 = load i16, ptr %__constexpr_4, align 8 %__constexpr_5 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 5 %ld5 = load i16, ptr %__constexpr_5, align 2 %__constexpr_6 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %ld6 = load i16, ptr %__constexpr_6, align 4 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 7 %ld7 = load i16, ptr %__constexpr_7, align 2 %cvt0 = sitofp i16 %ld0 to float, exceptions=ignore %cvt1 = sitofp i16 %ld1 to float, exceptions=ignore %cvt2 = sitofp i16 %ld2 to float, exceptions=ignore %cvt3 = sitofp i16 %ld3 to float, exceptions=ignore %cvt4 = sitofp i16 %ld4 to float, exceptions=ignore %cvt5 = sitofp i16 %ld5 to float, exceptions=ignore %cvt6 = sitofp i16 %ld6 to float, exceptions=ignore %cvt7 = sitofp i16 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } => @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i16_8f32() { %0: %__constexpr_0 = bitcast ptr @src16 to ptr %1 = load <4 x i16>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i16> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i16>, ptr %__constexpr_2, align 8 %4 = sitofp <4 x i16> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 80. PassManager<Function> : Skipping NOP -- 81. PassManager<Function> : Skipping NOP -- 82. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i16_16f32() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %__constexpr_4 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %ld4 = load i16, ptr %__constexpr_4, align 8 %__constexpr_5 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 5 %ld5 = load i16, ptr %__constexpr_5, align 2 %__constexpr_6 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %ld6 = load i16, ptr %__constexpr_6, align 4 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 7 %ld7 = load i16, ptr %__constexpr_7, align 2 %__constexpr_8 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 8 %ld8 = load i16, ptr %__constexpr_8, align 16 %__constexpr_9 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 9 %ld9 = load i16, ptr %__constexpr_9, align 2 %__constexpr_10 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 10 %ld10 = load i16, ptr %__constexpr_10, align 4 %__constexpr_11 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 11 %ld11 = load i16, ptr %__constexpr_11, align 2 %__constexpr_12 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 12 %ld12 = load i16, ptr %__constexpr_12, align 8 %__constexpr_13 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 13 %ld13 = load i16, ptr %__constexpr_13, align 2 %__constexpr_14 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 14 %ld14 = load i16, ptr %__constexpr_14, align 4 %__constexpr_15 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 15 %ld15 = load i16, ptr %__constexpr_15, align 2 %cvt0 = sitofp i16 %ld0 to float, exceptions=ignore %cvt1 = sitofp i16 %ld1 to float, exceptions=ignore %cvt2 = sitofp i16 %ld2 to float, exceptions=ignore %cvt3 = sitofp i16 %ld3 to float, exceptions=ignore %cvt4 = sitofp i16 %ld4 to float, exceptions=ignore %cvt5 = sitofp i16 %ld5 to float, exceptions=ignore %cvt6 = sitofp i16 %ld6 to float, exceptions=ignore %cvt7 = sitofp i16 %ld7 to float, exceptions=ignore %cvt8 = sitofp i16 %ld8 to float, exceptions=ignore %cvt9 = sitofp i16 %ld9 to float, exceptions=ignore %cvt10 = sitofp i16 %ld10 to float, exceptions=ignore %cvt11 = sitofp i16 %ld11 to float, exceptions=ignore %cvt12 = sitofp i16 %ld12 to float, exceptions=ignore %cvt13 = sitofp i16 %ld13 to float, exceptions=ignore %cvt14 = sitofp i16 %ld14 to float, exceptions=ignore %cvt15 = sitofp i16 %ld15 to float, exceptions=ignore %__constexpr_16 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_16, align 64 %__constexpr_17 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_17, align 4 %__constexpr_18 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_18, align 8 %__constexpr_19 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_19, align 4 %__constexpr_20 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_20, align 16 %__constexpr_21 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_21, align 4 %__constexpr_22 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_22, align 8 %__constexpr_23 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_23, align 4 %__constexpr_24 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 store float %cvt8, ptr %__constexpr_24, align 32 %__constexpr_25 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 9 store float %cvt9, ptr %__constexpr_25, align 4 %__constexpr_26 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 10 store float %cvt10, ptr %__constexpr_26, align 8 %__constexpr_27 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 11 store float %cvt11, ptr %__constexpr_27, align 4 %__constexpr_28 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 store float %cvt12, ptr %__constexpr_28, align 16 %__constexpr_29 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 13 store float %cvt13, ptr %__constexpr_29, align 4 %__constexpr_30 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 14 store float %cvt14, ptr %__constexpr_30, align 8 %__constexpr_31 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 15 store float %cvt15, ptr %__constexpr_31, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 83. SLPVectorizerPass ---------------------------------------- @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i16_16f32() { %0: %__constexpr_0 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 0 %ld0 = load i16, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 1 %ld1 = load i16, ptr %__constexpr_1, align 2 %__constexpr_2 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 2 %ld2 = load i16, ptr %__constexpr_2, align 4 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 3 %ld3 = load i16, ptr %__constexpr_3, align 2 %__constexpr_4 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %ld4 = load i16, ptr %__constexpr_4, align 8 %__constexpr_5 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 5 %ld5 = load i16, ptr %__constexpr_5, align 2 %__constexpr_6 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 6 %ld6 = load i16, ptr %__constexpr_6, align 4 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 7 %ld7 = load i16, ptr %__constexpr_7, align 2 %__constexpr_8 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 8 %ld8 = load i16, ptr %__constexpr_8, align 16 %__constexpr_9 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 9 %ld9 = load i16, ptr %__constexpr_9, align 2 %__constexpr_10 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 10 %ld10 = load i16, ptr %__constexpr_10, align 4 %__constexpr_11 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 11 %ld11 = load i16, ptr %__constexpr_11, align 2 %__constexpr_12 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 12 %ld12 = load i16, ptr %__constexpr_12, align 8 %__constexpr_13 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 13 %ld13 = load i16, ptr %__constexpr_13, align 2 %__constexpr_14 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 14 %ld14 = load i16, ptr %__constexpr_14, align 4 %__constexpr_15 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 15 %ld15 = load i16, ptr %__constexpr_15, align 2 %cvt0 = sitofp i16 %ld0 to float, exceptions=ignore %cvt1 = sitofp i16 %ld1 to float, exceptions=ignore %cvt2 = sitofp i16 %ld2 to float, exceptions=ignore %cvt3 = sitofp i16 %ld3 to float, exceptions=ignore %cvt4 = sitofp i16 %ld4 to float, exceptions=ignore %cvt5 = sitofp i16 %ld5 to float, exceptions=ignore %cvt6 = sitofp i16 %ld6 to float, exceptions=ignore %cvt7 = sitofp i16 %ld7 to float, exceptions=ignore %cvt8 = sitofp i16 %ld8 to float, exceptions=ignore %cvt9 = sitofp i16 %ld9 to float, exceptions=ignore %cvt10 = sitofp i16 %ld10 to float, exceptions=ignore %cvt11 = sitofp i16 %ld11 to float, exceptions=ignore %cvt12 = sitofp i16 %ld12 to float, exceptions=ignore %cvt13 = sitofp i16 %ld13 to float, exceptions=ignore %cvt14 = sitofp i16 %ld14 to float, exceptions=ignore %cvt15 = sitofp i16 %ld15 to float, exceptions=ignore %__constexpr_16 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_16, align 64 %__constexpr_17 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_17, align 4 %__constexpr_18 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_18, align 8 %__constexpr_19 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_19, align 4 %__constexpr_20 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_20, align 16 %__constexpr_21 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_21, align 4 %__constexpr_22 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_22, align 8 %__constexpr_23 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_23, align 4 %__constexpr_24 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 store float %cvt8, ptr %__constexpr_24, align 32 %__constexpr_25 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 9 store float %cvt9, ptr %__constexpr_25, align 4 %__constexpr_26 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 10 store float %cvt10, ptr %__constexpr_26, align 8 %__constexpr_27 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 11 store float %cvt11, ptr %__constexpr_27, align 4 %__constexpr_28 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 store float %cvt12, ptr %__constexpr_28, align 16 %__constexpr_29 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 13 store float %cvt13, ptr %__constexpr_29, align 4 %__constexpr_30 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 14 store float %cvt14, ptr %__constexpr_30, align 8 %__constexpr_31 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 15 store float %cvt15, ptr %__constexpr_31, align 4 ret void } => @src16 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i16_16f32() { %0: %__constexpr_0 = bitcast ptr @src16 to ptr %1 = load <4 x i16>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i16> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i16>, ptr %__constexpr_2, align 8 %4 = sitofp <4 x i16> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 %__constexpr_7 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 8 %__constexpr_6 = bitcast ptr %__constexpr_7 to ptr %5 = load <4 x i16>, ptr %__constexpr_6, align 16 %6 = sitofp <4 x i16> %5 to <4 x float>, exceptions=ignore %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 %__constexpr_8 = bitcast ptr %__constexpr_9 to ptr store <4 x float> %6, ptr %__constexpr_8, align 32 %__constexpr_11 = gep inbounds ptr @src16, 64 x i32 0, 2 x i64 12 %__constexpr_10 = bitcast ptr %__constexpr_11 to ptr %7 = load <4 x i16>, ptr %__constexpr_10, align 8 %8 = sitofp <4 x i16> %7 to <4 x float>, exceptions=ignore %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 %__constexpr_12 = bitcast ptr %__constexpr_13 to ptr store <4 x float> %8, ptr %__constexpr_12, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 84. PassManager<Function> : Skipping NOP -- 85. PassManager<Function> : Skipping NOP -- 86. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i8_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %cvt0 = sitofp i8 %ld0 to float, exceptions=ignore %cvt1 = sitofp i8 %ld1 to float, exceptions=ignore %cvt2 = sitofp i8 %ld2 to float, exceptions=ignore %cvt3 = sitofp i8 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 87. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i8_4f32() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %cvt0 = sitofp i8 %ld0 to float, exceptions=ignore %cvt1 = sitofp i8 %ld1 to float, exceptions=ignore %cvt2 = sitofp i8 %ld2 to float, exceptions=ignore %cvt3 = sitofp i8 %ld3 to float, exceptions=ignore %__constexpr_4 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_4, align 64 %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_5, align 4 %__constexpr_6 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_6, align 8 %__constexpr_7 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_7, align 4 ret void } => @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_4i8_4f32() { %0: %__constexpr_0 = bitcast ptr @src8 to ptr %1 = load <4 x i8>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i8> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 ret void } Transformation seems to be correct! -- 88. PassManager<Function> : Skipping NOP -- 89. PassManager<Function> : Skipping NOP -- 90. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i8_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %__constexpr_4 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %ld4 = load i8, ptr %__constexpr_4, align 4 %__constexpr_5 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 5 %ld5 = load i8, ptr %__constexpr_5, align 1 %__constexpr_6 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %ld6 = load i8, ptr %__constexpr_6, align 2 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 7 %ld7 = load i8, ptr %__constexpr_7, align 1 %cvt0 = sitofp i8 %ld0 to float, exceptions=ignore %cvt1 = sitofp i8 %ld1 to float, exceptions=ignore %cvt2 = sitofp i8 %ld2 to float, exceptions=ignore %cvt3 = sitofp i8 %ld3 to float, exceptions=ignore %cvt4 = sitofp i8 %ld4 to float, exceptions=ignore %cvt5 = sitofp i8 %ld5 to float, exceptions=ignore %cvt6 = sitofp i8 %ld6 to float, exceptions=ignore %cvt7 = sitofp i8 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 91. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i8_8f32() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %__constexpr_4 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %ld4 = load i8, ptr %__constexpr_4, align 4 %__constexpr_5 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 5 %ld5 = load i8, ptr %__constexpr_5, align 1 %__constexpr_6 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %ld6 = load i8, ptr %__constexpr_6, align 2 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 7 %ld7 = load i8, ptr %__constexpr_7, align 1 %cvt0 = sitofp i8 %ld0 to float, exceptions=ignore %cvt1 = sitofp i8 %ld1 to float, exceptions=ignore %cvt2 = sitofp i8 %ld2 to float, exceptions=ignore %cvt3 = sitofp i8 %ld3 to float, exceptions=ignore %cvt4 = sitofp i8 %ld4 to float, exceptions=ignore %cvt5 = sitofp i8 %ld5 to float, exceptions=ignore %cvt6 = sitofp i8 %ld6 to float, exceptions=ignore %cvt7 = sitofp i8 %ld7 to float, exceptions=ignore %__constexpr_8 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_8, align 64 %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_9, align 4 %__constexpr_10 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_10, align 8 %__constexpr_11 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_11, align 4 %__constexpr_12 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_12, align 16 %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_13, align 4 %__constexpr_14 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_14, align 8 %__constexpr_15 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_15, align 4 ret void } => @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_8i8_8f32() { %0: %__constexpr_0 = bitcast ptr @src8 to ptr %1 = load <4 x i8>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i8> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i8>, ptr %__constexpr_2, align 4 %4 = sitofp <4 x i8> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 ret void } Transformation seems to be correct! -- 92. PassManager<Function> : Skipping NOP -- 93. PassManager<Function> : Skipping NOP -- 94. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i8_16f32() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %__constexpr_4 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %ld4 = load i8, ptr %__constexpr_4, align 4 %__constexpr_5 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 5 %ld5 = load i8, ptr %__constexpr_5, align 1 %__constexpr_6 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %ld6 = load i8, ptr %__constexpr_6, align 2 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 7 %ld7 = load i8, ptr %__constexpr_7, align 1 %__constexpr_8 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 8 %ld8 = load i8, ptr %__constexpr_8, align 8 %__constexpr_9 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 9 %ld9 = load i8, ptr %__constexpr_9, align 1 %__constexpr_10 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 10 %ld10 = load i8, ptr %__constexpr_10, align 2 %__constexpr_11 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 11 %ld11 = load i8, ptr %__constexpr_11, align 1 %__constexpr_12 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 12 %ld12 = load i8, ptr %__constexpr_12, align 4 %__constexpr_13 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 13 %ld13 = load i8, ptr %__constexpr_13, align 1 %__constexpr_14 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 14 %ld14 = load i8, ptr %__constexpr_14, align 2 %__constexpr_15 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 15 %ld15 = load i8, ptr %__constexpr_15, align 1 %cvt0 = sitofp i8 %ld0 to float, exceptions=ignore %cvt1 = sitofp i8 %ld1 to float, exceptions=ignore %cvt2 = sitofp i8 %ld2 to float, exceptions=ignore %cvt3 = sitofp i8 %ld3 to float, exceptions=ignore %cvt4 = sitofp i8 %ld4 to float, exceptions=ignore %cvt5 = sitofp i8 %ld5 to float, exceptions=ignore %cvt6 = sitofp i8 %ld6 to float, exceptions=ignore %cvt7 = sitofp i8 %ld7 to float, exceptions=ignore %cvt8 = sitofp i8 %ld8 to float, exceptions=ignore %cvt9 = sitofp i8 %ld9 to float, exceptions=ignore %cvt10 = sitofp i8 %ld10 to float, exceptions=ignore %cvt11 = sitofp i8 %ld11 to float, exceptions=ignore %cvt12 = sitofp i8 %ld12 to float, exceptions=ignore %cvt13 = sitofp i8 %ld13 to float, exceptions=ignore %cvt14 = sitofp i8 %ld14 to float, exceptions=ignore %cvt15 = sitofp i8 %ld15 to float, exceptions=ignore %__constexpr_16 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_16, align 64 %__constexpr_17 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_17, align 4 %__constexpr_18 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_18, align 8 %__constexpr_19 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_19, align 4 %__constexpr_20 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_20, align 16 %__constexpr_21 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_21, align 4 %__constexpr_22 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_22, align 8 %__constexpr_23 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_23, align 4 %__constexpr_24 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 store float %cvt8, ptr %__constexpr_24, align 32 %__constexpr_25 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 9 store float %cvt9, ptr %__constexpr_25, align 4 %__constexpr_26 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 10 store float %cvt10, ptr %__constexpr_26, align 8 %__constexpr_27 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 11 store float %cvt11, ptr %__constexpr_27, align 4 %__constexpr_28 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 store float %cvt12, ptr %__constexpr_28, align 16 %__constexpr_29 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 13 store float %cvt13, ptr %__constexpr_29, align 4 %__constexpr_30 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 14 store float %cvt14, ptr %__constexpr_30, align 8 %__constexpr_31 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 15 store float %cvt15, ptr %__constexpr_31, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 95. SLPVectorizerPass ---------------------------------------- @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i8_16f32() { %0: %__constexpr_0 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 0 %ld0 = load i8, ptr %__constexpr_0, align 64 %__constexpr_1 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 1 %ld1 = load i8, ptr %__constexpr_1, align 1 %__constexpr_2 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 2 %ld2 = load i8, ptr %__constexpr_2, align 2 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 3 %ld3 = load i8, ptr %__constexpr_3, align 1 %__constexpr_4 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %ld4 = load i8, ptr %__constexpr_4, align 4 %__constexpr_5 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 5 %ld5 = load i8, ptr %__constexpr_5, align 1 %__constexpr_6 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 6 %ld6 = load i8, ptr %__constexpr_6, align 2 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 7 %ld7 = load i8, ptr %__constexpr_7, align 1 %__constexpr_8 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 8 %ld8 = load i8, ptr %__constexpr_8, align 8 %__constexpr_9 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 9 %ld9 = load i8, ptr %__constexpr_9, align 1 %__constexpr_10 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 10 %ld10 = load i8, ptr %__constexpr_10, align 2 %__constexpr_11 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 11 %ld11 = load i8, ptr %__constexpr_11, align 1 %__constexpr_12 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 12 %ld12 = load i8, ptr %__constexpr_12, align 4 %__constexpr_13 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 13 %ld13 = load i8, ptr %__constexpr_13, align 1 %__constexpr_14 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 14 %ld14 = load i8, ptr %__constexpr_14, align 2 %__constexpr_15 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 15 %ld15 = load i8, ptr %__constexpr_15, align 1 %cvt0 = sitofp i8 %ld0 to float, exceptions=ignore %cvt1 = sitofp i8 %ld1 to float, exceptions=ignore %cvt2 = sitofp i8 %ld2 to float, exceptions=ignore %cvt3 = sitofp i8 %ld3 to float, exceptions=ignore %cvt4 = sitofp i8 %ld4 to float, exceptions=ignore %cvt5 = sitofp i8 %ld5 to float, exceptions=ignore %cvt6 = sitofp i8 %ld6 to float, exceptions=ignore %cvt7 = sitofp i8 %ld7 to float, exceptions=ignore %cvt8 = sitofp i8 %ld8 to float, exceptions=ignore %cvt9 = sitofp i8 %ld9 to float, exceptions=ignore %cvt10 = sitofp i8 %ld10 to float, exceptions=ignore %cvt11 = sitofp i8 %ld11 to float, exceptions=ignore %cvt12 = sitofp i8 %ld12 to float, exceptions=ignore %cvt13 = sitofp i8 %ld13 to float, exceptions=ignore %cvt14 = sitofp i8 %ld14 to float, exceptions=ignore %cvt15 = sitofp i8 %ld15 to float, exceptions=ignore %__constexpr_16 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 0 store float %cvt0, ptr %__constexpr_16, align 64 %__constexpr_17 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 1 store float %cvt1, ptr %__constexpr_17, align 4 %__constexpr_18 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 2 store float %cvt2, ptr %__constexpr_18, align 8 %__constexpr_19 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 3 store float %cvt3, ptr %__constexpr_19, align 4 %__constexpr_20 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 store float %cvt4, ptr %__constexpr_20, align 16 %__constexpr_21 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 5 store float %cvt5, ptr %__constexpr_21, align 4 %__constexpr_22 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 6 store float %cvt6, ptr %__constexpr_22, align 8 %__constexpr_23 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 7 store float %cvt7, ptr %__constexpr_23, align 4 %__constexpr_24 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 store float %cvt8, ptr %__constexpr_24, align 32 %__constexpr_25 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 9 store float %cvt9, ptr %__constexpr_25, align 4 %__constexpr_26 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 10 store float %cvt10, ptr %__constexpr_26, align 8 %__constexpr_27 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 11 store float %cvt11, ptr %__constexpr_27, align 4 %__constexpr_28 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 store float %cvt12, ptr %__constexpr_28, align 16 %__constexpr_29 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 13 store float %cvt13, ptr %__constexpr_29, align 4 %__constexpr_30 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 14 store float %cvt14, ptr %__constexpr_30, align 8 %__constexpr_31 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 15 store float %cvt15, ptr %__constexpr_31, align 4 ret void } => @src8 = global 64 bytes, align 64 @dst32 = global 64 bytes, align 64 define void @sitofp_16i8_16f32() { %0: %__constexpr_0 = bitcast ptr @src8 to ptr %1 = load <4 x i8>, ptr %__constexpr_0, align 64 %2 = sitofp <4 x i8> %1 to <4 x float>, exceptions=ignore %__constexpr_1 = bitcast ptr @dst32 to ptr store <4 x float> %2, ptr %__constexpr_1, align 64 %__constexpr_3 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 4 %__constexpr_2 = bitcast ptr %__constexpr_3 to ptr %3 = load <4 x i8>, ptr %__constexpr_2, align 4 %4 = sitofp <4 x i8> %3 to <4 x float>, exceptions=ignore %__constexpr_5 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 4 %__constexpr_4 = bitcast ptr %__constexpr_5 to ptr store <4 x float> %4, ptr %__constexpr_4, align 16 %__constexpr_7 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 8 %__constexpr_6 = bitcast ptr %__constexpr_7 to ptr %5 = load <4 x i8>, ptr %__constexpr_6, align 8 %6 = sitofp <4 x i8> %5 to <4 x float>, exceptions=ignore %__constexpr_9 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 8 %__constexpr_8 = bitcast ptr %__constexpr_9 to ptr store <4 x float> %6, ptr %__constexpr_8, align 32 %__constexpr_11 = gep inbounds ptr @src8, 64 x i32 0, 1 x i64 12 %__constexpr_10 = bitcast ptr %__constexpr_11 to ptr %7 = load <4 x i8>, ptr %__constexpr_10, align 4 %8 = sitofp <4 x i8> %7 to <4 x float>, exceptions=ignore %__constexpr_13 = gep inbounds ptr @dst32, 64 x i32 0, 4 x i64 12 %__constexpr_12 = bitcast ptr %__constexpr_13 to ptr store <4 x float> %8, ptr %__constexpr_12, align 16 ret void } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 96. PassManager<Function> : Skipping NOP -- 97. PassManager<Function> : Skipping NOP -- 98. SLPVectorizerPass ---------------------------------------- define <4 x double> @sitofp_4xi32_4f64(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { %0: %cvt0 = sitofp i32 %a0 to double, exceptions=ignore %cvt1 = sitofp i32 %a1 to double, exceptions=ignore %cvt2 = sitofp i32 %a2 to double, exceptions=ignore %cvt3 = sitofp i32 %a3 to double, exceptions=ignore %res0 = insertelement <4 x double> undef, double %cvt0, i32 0 %res1 = insertelement <4 x double> %res0, double %cvt1, i32 1 %res2 = insertelement <4 x double> %res1, double %cvt2, i32 2 %res3 = insertelement <4 x double> %res2, double %cvt3, i32 3 ret <4 x double> %res3 } Transformation seems to be correct! (syntactically equal) -- 99. SLPVectorizerPass ---------------------------------------- define <4 x double> @sitofp_4xi32_4f64(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { %0: %cvt0 = sitofp i32 %a0 to double, exceptions=ignore %cvt1 = sitofp i32 %a1 to double, exceptions=ignore %cvt2 = sitofp i32 %a2 to double, exceptions=ignore %cvt3 = sitofp i32 %a3 to double, exceptions=ignore %res0 = insertelement <4 x double> undef, double %cvt0, i32 0 %res1 = insertelement <4 x double> %res0, double %cvt1, i32 1 %res2 = insertelement <4 x double> %res1, double %cvt2, i32 2 %res3 = insertelement <4 x double> %res2, double %cvt3, i32 3 ret <4 x double> %res3 } => define <4 x double> @sitofp_4xi32_4f64(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { %0: %1 = insertelement <2 x i32> poison, i32 %a0, i32 0 %2 = insertelement <2 x i32> %1, i32 %a1, i32 1 %3 = sitofp <2 x i32> %2 to <2 x double>, exceptions=ignore %4 = insertelement <2 x i32> poison, i32 %a2, i32 0 %5 = insertelement <2 x i32> %4, i32 %a3, i32 1 %6 = sitofp <2 x i32> %5 to <2 x double>, exceptions=ignore %7 = shufflevector <2 x double> %3, <2 x double> poison, 0, 1, 4294967295, 4294967295 %8 = shufflevector <2 x double> %6, <2 x double> poison, 0, 1, 4294967295, 4294967295 %res31 = shufflevector <4 x double> %7, <4 x double> %8, 0, 1, 4, 5 ret <4 x double> %res31 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 100. PassManager<Function> : Skipping NOP -- 101. PassManager<Function> : Skipping NOP -- 102. SLPVectorizerPass ---------------------------------------- define <4 x double> @sitofp_with_const_4xi32_4f64(i32 %a2, i32 %a3) { %0: %cvt2 = sitofp i32 %a2 to double, exceptions=ignore %cvt3 = sitofp i32 %a3 to double, exceptions=ignore %res0 = insertelement <4 x double> undef, double 1.000000, i32 3 %res2 = insertelement <4 x double> %res0, double %cvt2, i32 0 %res3 = insertelement <4 x double> %res2, double %cvt3, i32 1 ret <4 x double> %res3 } Transformation seems to be correct! (syntactically equal) -- 103. SLPVectorizerPass ---------------------------------------- define <4 x double> @sitofp_with_const_4xi32_4f64(i32 %a2, i32 %a3) { %0: %cvt2 = sitofp i32 %a2 to double, exceptions=ignore %cvt3 = sitofp i32 %a3 to double, exceptions=ignore %res0 = insertelement <4 x double> undef, double 1.000000, i32 3 %res2 = insertelement <4 x double> %res0, double %cvt2, i32 0 %res3 = insertelement <4 x double> %res2, double %cvt3, i32 1 ret <4 x double> %res3 } => define <4 x double> @sitofp_with_const_4xi32_4f64(i32 %a2, i32 %a3) { %0: %1 = insertelement <2 x i32> poison, i32 %a2, i32 0 %2 = insertelement <2 x i32> %1, i32 %a3, i32 1 %3 = sitofp <2 x i32> %2 to <2 x double>, exceptions=ignore %res0 = insertelement <4 x double> undef, double 1.000000, i32 3 %4 = shufflevector <2 x double> %3, <2 x double> poison, 0, 1, 4294967295, 4294967295 %res31 = shufflevector <4 x double> %res0, <4 x double> %4, 4, 5, 2, 3 ret <4 x double> %res31 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 104. PassManager<Function> : Skipping NOP -- 105. PassManager<Function> : Skipping NOP -- 106. SLPVectorizerPass ---------------------------------------- define <4 x double> @sitofp_with_undef_4xi32_4f64(i32 %a2, i32 %a3) { %0: %cvt2 = sitofp i32 %a2 to double, exceptions=ignore %cvt3 = sitofp i32 %a3 to double, exceptions=ignore %res2 = insertelement <4 x double> undef, double %cvt2, i32 0 %res3 = insertelement <4 x double> %res2, double %cvt3, i32 1 ret <4 x double> %res3 } Transformation seems to be correct! (syntactically equal) -- 107. SLPVectorizerPass ---------------------------------------- define <4 x double> @sitofp_with_undef_4xi32_4f64(i32 %a2, i32 %a3) { %0: %cvt2 = sitofp i32 %a2 to double, exceptions=ignore %cvt3 = sitofp i32 %a3 to double, exceptions=ignore %res2 = insertelement <4 x double> undef, double %cvt2, i32 0 %res3 = insertelement <4 x double> %res2, double %cvt3, i32 1 ret <4 x double> %res3 } => define <4 x double> @sitofp_with_undef_4xi32_4f64(i32 %a2, i32 %a3) { %0: %1 = insertelement <2 x i32> poison, i32 %a2, i32 0 %2 = insertelement <2 x i32> %1, i32 %a3, i32 1 %3 = sitofp <2 x i32> %2 to <2 x double>, exceptions=ignore %4 = shufflevector <2 x double> %3, <2 x double> poison, 0, 1, 4294967295, 4294967295 ret <4 x double> %4 } Transformation doesn't verify! (unsound) ERROR: Target is more poisonous than source Example: i32 %a2 = poison i32 %a3 = poison Source: double %cvt2 = poison double %cvt3 = poison <4 x double> %res2 = < poison, #x0000000000000000 (+0.0) [based on undef value], #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) > <4 x double> %res3 = < poison, poison, #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) > Target: <2 x i32> %1 = < poison, poison > <2 x i32> %2 = < poison, poison > <2 x double> %3 = < poison, poison > <4 x double> %4 = < poison, poison, poison, poison > Source value: < poison, poison, #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) > 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' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' ------------------- SMT STATS ------------------- Num queries: 113 Num invalid: 0 Num skips: 0 Num trivial: 113 (50.0%) Num timeout: 15 (13.3%) Num errors: 0 (0.0%) Num SAT: 88 (77.9%) Num UNSAT: 10 (8.8%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -mtriple=x86_64-unknown -passes=slp-vectorizer -S + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/sitofp.ll --check-prefixes=CHECK,SSE FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/sitofp.ll --check-prefixes=CHECK,SSE