Closed 486946 closed 10 months ago
兼容更多编译器,有些低版本的gcc不支持这些汇编指令,会编译失败
兼容更多编译器,有些低版本的gcc不支持这些汇编指令,会编译失败 只是为了编译,但实际bfmmla需要支持armv8.6扩展,就算低版本编译器能编译过,但是不支持armv8.6扩展的硬件上还是跑不了吧?还是会报非法指令吧
不会,运行时会根据CPU支持的指令集来选择计算kernel,不支持i8mm的CPU不会执行mmla
代码;不支持sdot的CPU也不会执行sdot
的代码;
不会,运行时会根据CPU支持的指令集来选择计算kernel,不支持i8mm的CPU不会执行
mmla
代码;不支持sdot的CPU也不会执行sdot
的代码; dot是有cpu判定;貌似bf启用没有这些cpu是否支持的判定?bf直接就是宏控制打开支持,且配置走bf16
如: MNN//source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMul_BF16.S 中 .inst 0x6e40ec48 // bfmmla v8.4s, v2.8h, v0.8h
MNN/source/backend/cpu/arm/arm64/low_memory/MNNGemmHybridInt8FP32_sdot.S中 .inst 0x4f84e010 // sdot v16.4s, v0.16b, v4.4b[0]
为什么使用机器码,而不直接使用对应汇编指令?