Projection 函数的C程序代码:
Clang 编译后的bc:(图表2和图表3)
%struct.Triangle_3D = type { i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.Triangle_2D = type { i8, i8, i8, i8, i8, i8, i8 }
Vivado的处理结果: (图表4)
我对memcpy(dest,src)所有情况总结:(图表5)
我的处理结果IR:图表6
%9 = bitcast %struct.Triangle_3D* %5 to i8*
//%struct.Triangle_3D = type { i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%10 = bitcast { i64, i8 }* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 1, i1 false)
//%11 = bitcast i8* %5 to i8*
//%12 = getelementptr inbounds %struct.Triangle_3D, %struct.Triangle_3D* %5, i32 0, i32 8
//%13 = bitcast i8* %12 to i8*
//call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %11, i64 1, i32 1, i1 false)