diff --git a/scripts/llvm/CMakeLists.txt b/scripts/llvm/CMakeLists.txt index 5004e5fc..f0855b77 100644 --- a/scripts/llvm/CMakeLists.txt +++ b/scripts/llvm/CMakeLists.txt @@ -1995,6 +1995,22 @@ add_library_variants_for_cpu( RAM_SIZE 0x1000000 STACK_SIZE 4K ) +add_library_variants_for_cpu( + rv32emc_zicsr_zcb_zba_zbb_zbc_zbs_ilp32e + COMPILE_FLAGS "-march=rv32emc_zicsr_zcb_zba_zbb_zbc_zbs -mabi=ilp32e" + MULTILIB_FLAGS "--target=riscv32-unknown-none-elf -march=rv32e2p0_m2p0_c2p0_zicsr2p0_zmmul1p0_zca1p0_zcb1p0_zba1p0_zbb1p0_zbc1p0_zbs1p0 -mabi=ilp32e" + PICOLIBC_BUILD_TYPE "release" + QEMU_MACHINE "none" + QEMU_CPU "rv32" + QEMU_PARAMS "-m 1G" + BOOT_FLASH_ADDRESS 0x00000000 + BOOT_FLASH_SIZE 0x1000 + FLASH_ADDRESS 0x20000000 + FLASH_SIZE 0x1000000 + RAM_ADDRESS 0x21000000 + RAM_SIZE 0x1000000 + STACK_SIZE 4K +) ## RV64I add_library_variants_for_cpu( rv64i_zicsr_zifencei_lp64 @@ -2092,6 +2108,22 @@ add_library_variants_for_cpu( RAM_SIZE 0x1000000 STACK_SIZE 4K ) +add_library_variants_for_cpu( + rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64d + COMPILE_FLAGS "-march=rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs -mabi=lp64d -mcmodel=medany" + MULTILIB_FLAGS "--target=riscv64-unknown-none-elf -march=rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zba1p0_zbb1p0_zbc1p0_zbs1p0 -mabi=lp64d" + PICOLIBC_BUILD_TYPE "release" + QEMU_MACHINE "none" + QEMU_CPU "rv64" + QEMU_PARAMS "-m 1G" + BOOT_FLASH_ADDRESS 0x00000000 + BOOT_FLASH_SIZE 0x1000 + FLASH_ADDRESS 0x20000000 + FLASH_SIZE 0x1000000 + RAM_ADDRESS 0x21000000 + RAM_SIZE 0x1000000 + STACK_SIZE 4K +) add_library_variants_for_cpu( rv64imafd_zicsr_zifencei_lp64d COMPILE_FLAGS "-march=rv64imafd_zicsr_zifencei -mabi=lp64d -mcmodel=medany" diff --git a/scripts/llvm/cmake/multilib.yaml.in b/scripts/llvm/cmake/multilib.yaml.in index 197a83f8..4ab1f88a 100644 --- a/scripts/llvm/cmake/multilib.yaml.in +++ b/scripts/llvm/cmake/multilib.yaml.in @@ -245,6 +245,10 @@ Mappings: - Match: -march=rv32e([0-9]+p[0-9]+)_m([0-9]+p[0-9]+)_a([0-9]+p[0-9]+)_c([0-9]+p[0-9]+)_zicsr([0-9]+p[0-9]+)_zifencei([0-9]+p[0-9]+)_zmmul([0-9]+p[0-9]+)_zba([0-9]+p[0-9]+)_zbb([0-9]+p[0-9]+)_zbc([0-9]+p[0-9]+)_zbs([0-9]+p[0-9]+) Flags: - -march=rv32e2p0_m2p0_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zba1p0_zbb1p0_zbc1p0_zbs1p0 +## march.rv32emc_zicsr_zcb_zba_zbb_zbc_zbs/mabi.ilp32e=march.rv32emc_zicntr_zicsr_zcb_zba_zbb_zbc_zbs/mabi.ilp32e +- Match: -march=rv32e([0-9]+p[0-9]+)_m([0-9]+p[0-9]+)_c([0-9]+p[0-9]+)_zicntr([0-9]+p[0-9]+)_zicsr([0-9]+p[0-9]+)_zmmul([0-9]+p[0-9]+)_zca([0-9]+p[0-9]+)_zcb([0-9]+p[0-9]+)_zba([0-9]+p[0-9]+)_zbb([0-9]+p[0-9]+)_zbc([0-9]+p[0-9]+)_zbs([0-9]+p[0-9]+) + Flags: + - -march=rv32e2p0_m2p0_c2p0_zicsr2p0_zmmul1p0_zca1p0_zcb1p0_zba1p0_zbb1p0_zbc1p0_zbs1p0 # RV64I alternate mappings ## march.rv64i_zicsr_zifencei/mabi.lp64/mcmodel.medany=march.rv64ia_zicsr_zifencei/mabi.lp64/mcmodel.medany diff --git a/scripts/llvm/test-support/picolibc-test-wrapper.py b/scripts/llvm/test-support/picolibc-test-wrapper.py index 046b7c42..ead8270d 100755 --- a/scripts/llvm/test-support/picolibc-test-wrapper.py +++ b/scripts/llvm/test-support/picolibc-test-wrapper.py @@ -7,6 +7,7 @@ from run_qemu import run_qemu import argparse import pathlib +import fnmatch import sys # https://mesonbuild.com/Unit-tests.html#skipped-tests-and-hard-errors @@ -17,67 +18,51 @@ # rounding modes for computations on types implemented in software # https://github.com/picolibc/picolibc/pull/500 # https://github.com/zephyrproject-rtos/sdk-ng/issues/838 - "picolibc_armv7m_soft_fpv4_sp_d16-build/test/math_errhandling", - "picolibc_armv7m_hard_fpv4_sp_d16-build/test/math_errhandling", - "picolibc_armv7r_hard_vfpv3xd-build/test/math_errhandling", - "picolibc_armv7r_hard_vfpv3xd_exn_rtti-build/test/math_errhandling", - "picolibc_armv8.1m.main_hard_fp_nomve-build/test/math_errhandling", - "picolibc_armv7m_soft_fpv4_sp_d16_exn_rtti-build/test/math_errhandling", - "picolibc_armv7m_hard_fpv4_sp_d16_exn_rtti-build/test/math_errhandling", - "picolibc_armv8.1m.main_hard_fp_nomve_exn_rtti-build/test/math_errhandling", - "picolibc_armv8.1m.main_hard_nofp_mve-build/test/fenv", - "picolibc_armv8.1m.main_hard_nofp_mve-build/test/math_errhandling", - "picolibc_armv8m.main_hard_fp-build/test/math_errhandling", - "picolibc_armv8.1m.main_hard_nofp_mve_exn_rtti-build/test/fenv", - "picolibc_armv8.1m.main_hard_nofp_mve_exn_rtti-build/test/math_errhandling", - "picolibc_armv8m.main_hard_fp_exn_rtti-build/test/math_errhandling", - "picolibc_rv32imafc_zicsr_zifencei_ilp32f-build/test/rounding-mode", - "picolibc_rv32imafc_zicsr_zifencei_ilp32f-build/test/math_errhandling", - "picolibc_rv32imafc_zicsr_zifencei_ilp32f-build/test/test-fma", - "picolibc_rv32imafc_zicsr_zifencei_ilp32f_exn_rtti-build/test/rounding-mode", - "picolibc_rv32imafc_zicsr_zifencei_ilp32f_exn_rtti-build/test/math_errhandling", - "picolibc_rv32imafc_zicsr_zifencei_ilp32f_exn_rtti-build/test/test-fma", - "picolibc_rv32imfc_zicsr_zifencei_ilp32f-build/test/rounding-mode", - "picolibc_rv32imfc_zicsr_zifencei_ilp32f-build/test/math_errhandling", - "picolibc_rv32imfc_zicsr_zifencei_ilp32f-build/test/test-fma", - "picolibc_rv32imfc_zicsr_zifencei_ilp32f_exn_rtti-build/test/rounding-mode", - "picolibc_rv32imfc_zicsr_zifencei_ilp32f_exn_rtti-build/test/math_errhandling", - "picolibc_rv32imfc_zicsr_zifencei_ilp32f_exn_rtti-build/test/test-fma", - "picolibc_rv32imafd_zicsr_zifencei_ilp32d-build/test/math_errhandling", - "picolibc_rv32imafd_zicsr_zifencei_ilp32d-build/test/test-fma", - "picolibc_rv32imafd_zicsr_zifencei_ilp32d_exn_rtti-build/test/math_errhandling", - "picolibc_rv32imafd_zicsr_zifencei_ilp32d_exn_rtti-build/test/test-fma", - "picolibc_rv32if_zicsr_zifencei_ilp32f-build/test/rounding-mode", - "picolibc_rv32if_zicsr_zifencei_ilp32f-build/test/math_errhandling", - "picolibc_rv32if_zicsr_zifencei_ilp32f-build/test/test-fma", - "picolibc_rv32if_zicsr_zifencei_ilp32f_exn_rtti-build/test/rounding-mode", - "picolibc_rv32if_zicsr_zifencei_ilp32f_exn_rtti-build/test/math_errhandling", - "picolibc_rv32if_zicsr_zifencei_ilp32f_exn_rtti-build/test/test-fma", - "picolibc_rv64imafdc_zicsr_zifencei_lp64d-build/test/math_errhandling", - "picolibc_rv64imafdc_zicsr_zifencei_lp64d-build/test/test-fma", - "picolibc_rv64imafdc_zicsr_zifencei_lp64d_exn_rtti-build/test/math_errhandling", - "picolibc_rv64imafdc_zicsr_zifencei_lp64d_exn_rtti-build/test/test-fma", - "picolibc_rv64imafd_zicsr_zifencei_lp64d-build/test/math_errhandling", - "picolibc_rv64imafd_zicsr_zifencei_lp64d-build/test/test-fma", - "picolibc_rv64imafd_zicsr_zifencei_lp64d_exn_rtti-build/test/math_errhandling", - "picolibc_rv64imafd_zicsr_zifencei_lp64d_exn_rtti-build/test/test-fma", - "picolibc_rv64imfc_zicsr_zifencei_lp64f-build/test/rounding-mode", - "picolibc_rv64imfc_zicsr_zifencei_lp64f-build/test/math_errhandling", - "picolibc_rv64imfc_zicsr_zifencei_lp64f-build/test/test-fma", - "picolibc_rv64imfc_zicsr_zifencei_lp64f_exn_rtti-build/test/rounding-mode", - "picolibc_rv64imfc_zicsr_zifencei_lp64f_exn_rtti-build/test/math_errhandling", - "picolibc_rv64imfc_zicsr_zifencei_lp64f_exn_rtti-build/test/test-fma", - "picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f-build/test/rounding-mode", - "picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f-build/test/math_errhandling", - "picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f-build/test/test-fma", - "picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f_exn_rtti-build/test/rounding-mode", - "picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f_exn_rtti-build/test/math_errhandling", - "picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f_exn_rtti-build/test/test-fma", + "**/picolibc_armv7m_soft_fpv4_sp_d16-build/test/math_errhandling", + "**/picolibc_armv7m_hard_fpv4_sp_d16-build/test/math_errhandling", + "**/picolibc_armv7r_hard_vfpv3xd-build/test/math_errhandling", + "**/picolibc_armv7r_hard_vfpv3xd_exn_rtti-build/test/math_errhandling", + "**/picolibc_armv8.1m.main_hard_fp_nomve-build/test/math_errhandling", + "**/picolibc_armv7m_soft_fpv4_sp_d16_exn_rtti-build/test/math_errhandling", + "**/picolibc_armv7m_hard_fpv4_sp_d16_exn_rtti-build/test/math_errhandling", + "**/picolibc_armv8.1m.main_hard_fp_nomve_exn_rtti-build/test/math_errhandling", + "**/picolibc_armv8.1m.main_hard_nofp_mve-build/test/fenv", + "**/picolibc_armv8.1m.main_hard_nofp_mve-build/test/math_errhandling", + "**/picolibc_armv8m.main_hard_fp-build/test/math_errhandling", + "**/picolibc_armv8.1m.main_hard_nofp_mve_exn_rtti-build/test/fenv", + "**/picolibc_armv8.1m.main_hard_nofp_mve_exn_rtti-build/test/math_errhandling", + "**/picolibc_armv8m.main_hard_fp_exn_rtti-build/test/math_errhandling", + "**/picolibc_rv32imafc_zicsr_zifencei_ilp32f*-build/test/rounding-mode", + "**/picolibc_rv32imafc_zicsr_zifencei_ilp32f*-build/test/math_errhandling", + "**/picolibc_rv32imafc_zicsr_zifencei_ilp32f*-build/test/test-fma", + "**/picolibc_rv32imfc_zicsr_zifencei_ilp32f*-build/test/rounding-mode", + "**/picolibc_rv32imfc_zicsr_zifencei_ilp32f*-build/test/math_errhandling", + "**/picolibc_rv32imfc_zicsr_zifencei_ilp32f*-build/test/test-fma", + "**/picolibc_rv32imafd_zicsr_zifencei_ilp32d*-build/test/math_errhandling", + "**/picolibc_rv32imafd_zicsr_zifencei_ilp32d*-build/test/test-fma", + "**/picolibc_rv32if_zicsr_zifencei_ilp32f*-build/test/rounding-mode", + "**/picolibc_rv32if_zicsr_zifencei_ilp32f*-build/test/math_errhandling", + "**/picolibc_rv32if_zicsr_zifencei_ilp32f*-build/test/test-fma", + "**/picolibc_rv64imafdc_zicsr_zifencei_lp64d*-build/test/math_errhandling", + "**/picolibc_rv64imafdc_zicsr_zifencei_lp64d*-build/test/test-fma", + "**/picolibc_rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64d*-build/test/math_errhandling", + "**/picolibc_rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64d*-build/test/test-fma", + "**/picolibc_rv64imafd_zicsr_zifencei_lp64d*-build/test/math_errhandling", + "**/picolibc_rv64imafd_zicsr_zifencei_lp64d*-build/test/test-fma", + "**/picolibc_rv64imfc_zicsr_zifencei_lp64f*-build/test/rounding-mode", + "**/picolibc_rv64imfc_zicsr_zifencei_lp64f*-build/test/math_errhandling", + "**/picolibc_rv64imfc_zicsr_zifencei_lp64f*-build/test/test-fma", + "**/picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f*-build/test/rounding-mode", + "**/picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f*-build/test/math_errhandling", + "**/picolibc_rv64imfc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64f*-build/test/test-fma", + # Picolibc built with RISC-V Zc* extension does not work and all tests time + # out. Disable testing until this issue is fixed. + "**/picolibc_rv32emc_zicsr_zcb_zba_zbb_zbc_zbs_ilp32e*-build/*", ] def is_disabled(image): - return any([image.endswith(t) for t in disabled_tests]) + return any([fnmatch.fnmatch(image, t) for t in disabled_tests]) def run(args): diff --git a/scripts/llvm/test/multilib/rv32e.test b/scripts/llvm/test/multilib/rv32e.test index f09c3ba5..8c6f66b4 100644 --- a/scripts/llvm/test/multilib/rv32e.test +++ b/scripts/llvm/test/multilib/rv32e.test @@ -27,3 +27,8 @@ # RUN: %clang -print-multi-directory --target=riscv32-none-elf -march=rv32emc_zicsr_zba_zbb_zbc_zbs -mabi=ilp32e | FileCheck %s --check-prefix=RV32EMC_ZICSR_ZBA_ZBB_ZBC_ZBS_ILP32E # RV32EMC_ZICSR_ZBA_ZBB_ZBC_ZBS_ILP32E: riscv32-none-elf/rv32emc_zicsr_zba_zbb_zbc_zbs_ilp32e_exn_rtti{{$}} # RV32EMC_ZICSR_ZBA_ZBB_ZBC_ZBS_ILP32E-EMPTY: + +# RUN: %clang -print-multi-directory --target=riscv32-none-elf -march=rv32emc_zicsr_zcb_zba_zbb_zbc_zbs -mabi=ilp32e | FileCheck %s --check-prefix=RV32EMC_ZICSR_ZCB_ZBA_ZBB_ZBC_ZBS_ILP32E +# RUN: %clang -print-multi-directory --target=riscv32-none-elf -march=rv32emc_zicntr_zicsr_zcb_zba_zbb_zbc_zbs -mabi=ilp32e | FileCheck %s --check-prefix=RV32EMC_ZICSR_ZCB_ZBA_ZBB_ZBC_ZBS_ILP32E +# RV32EMC_ZICSR_ZCB_ZBA_ZBB_ZBC_ZBS_ILP32E: riscv32-none-elf/rv32emc_zicsr_zcb_zba_zbb_zbc_zbs_ilp32e_exn_rtti{{$}} +# RV32EMC_ZICSR_ZCB_ZBA_ZBB_ZBC_ZBS_ILP32E-EMPTY: diff --git a/scripts/llvm/test/multilib/rv64i.test b/scripts/llvm/test/multilib/rv64i.test index be3d6334..997ad95e 100644 --- a/scripts/llvm/test/multilib/rv64i.test +++ b/scripts/llvm/test/multilib/rv64i.test @@ -30,6 +30,11 @@ # RV64IMAFDC_ZICSR_ZIFENCEI_LP64D: riscv64-none-elf/rv64imafdc_zicsr_zifencei_lp64d_exn_rtti{{$}} # RV64IMAFDC_ZICSR_ZIFENCEI_LP64D-EMPTY: +# RUN: %clang -print-multi-directory --target=riscv64-none-elf -march=rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs -mabi=lp64d | FileCheck %s --check-prefix=RV64IMAFDC_ZICSR_ZIFENCEI_ZBA_ZBB_ZBC_ZBS_LP64D +# RUN: %clang -print-multi-directory --target=riscv64-none-elf -march=rv64gc_zba_zbb_zbc_zbs -mabi=lp64d | FileCheck %s --check-prefix=RV64IMAFDC_ZICSR_ZIFENCEI_ZBA_ZBB_ZBC_ZBS_LP64D +# RV64IMAFDC_ZICSR_ZIFENCEI_ZBA_ZBB_ZBC_ZBS_LP64D: riscv64-none-elf/rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs_lp64d_exn_rtti{{$}} +# RV64IMAFDC_ZICSR_ZIFENCEI_ZBA_ZBB_ZBC_ZBS_LP64D-EMPTY: + # RUN: %clang -print-multi-directory --target=riscv64-none-elf -march=rv64imafd_zicsr_zifencei -mabi=lp64d | FileCheck %s --check-prefix=RV64IMAFD_ZICSR_ZIFENCEI_LP64D # RUN: %clang -print-multi-directory --target=riscv64-none-elf -march=rv64g -mabi=lp64d | FileCheck %s --check-prefix=RV64IMAFD_ZICSR_ZIFENCEI_LP64D # RV64IMAFD_ZICSR_ZIFENCEI_LP64D: riscv64-none-elf/rv64imafd_zicsr_zifencei_lp64d_exn_rtti{{$}}