diff --git a/CMakeLists.txt b/CMakeLists.txt index bf4ac05e4f29..d88a200dcd3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ cmake_minimum_required(VERSION 3.26) # cmake --install . --component _C project(vllm_extensions LANGUAGES CXX) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/cmake/cpu_extension.cmake b/cmake/cpu_extension.cmake index 8535186cc1ec..1f4797b49acb 100644 --- a/cmake/cpu_extension.cmake +++ b/cmake/cpu_extension.cmake @@ -1,7 +1,7 @@ include(FetchContent) set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_EXTENSIONS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/csrc/cpu/cpu_types_arm.hpp b/csrc/cpu/cpu_types_arm.hpp index c25713052725..65d7b6ce86f5 100644 --- a/csrc/cpu/cpu_types_arm.hpp +++ b/csrc/cpu/cpu_types_arm.hpp @@ -484,6 +484,13 @@ struct FP32Vec16 : public VectorizedRegWrapper { std::tie(reg.val[2], reg.val[3]) = convert_bfloat16_float(v.reg.val[1]); }; + explicit FP32Vec16(const BF16Vec32& v, int upper) { + int base = upper ? 2 : 0; + std::tie(reg.val[0], reg.val[1]) = convert_bfloat16_float(v.reg.val[base]); + std::tie(reg.val[2], reg.val[3]) = + convert_bfloat16_float(v.reg.val[base + 1]); + }; + explicit FP32Vec16(const BF16Vec8& v) : FP32Vec16(FP32Vec8(v)) {}; explicit FP32Vec16(const FP16Vec16& v) {