upd: да, продуплил, это и правда opt делает. теперь надо рыть код opt'а
Кто-нибудь знает где в этой помойке коде шланга проход векторизации? или это вообще opt делает?
ну например когда читаем из двух массивов по 4 элемента и их перемножаем, чтоб получить
%1 = bitcast i32* %a to <4 x i32>*
%2 = load <4 x i32>, <4 x i32>* %1, align 4, !tbaa !1
%3 = bitcast i32* %b to <4 x i32>*
%4 = load <4 x i32>, <4 x i32>* %3, align 4, !tbaa !1
%5 = mul nsw <4 x i32> %4, %2
%6 = bitcast i32* %a to <4 x i32>*
store <4 x i32> %5, <4 x i32>* %6, align 4, !tbaa !1
вместо
%1 = load i32, i32* %a, align 4, !tbaa !1
%2 = load i32, i32* %b, align 4, !tbaa !1
%3 = mul nsw i32 %2, %1
store i32 %3, i32* %a, align 4, !tbaa !1
%4 = getelementptr inbounds i32, i32* %a, i64 1
%5 = load i32, i32* %4, align 4, !tbaa !1
%6 = getelementptr inbounds i32, i32* %b, i64 1
%7 = load i32, i32* %6, align 4, !tbaa !1
%8 = mul nsw i32 %7, %5
store i32 %8, i32* %4, align 4, !tbaa !1
.......
Очень лень спрашивать в рассылке потому что там скорость реакции как у морской черепахи в пустыне. А в коде шланга искать что-либо бесполезно.
cast DELIRIUM, можт ты знаешь