1PROJECT(pico_float_test) 2 3 4if (PICO_RISCV) 5 6 # Separate, simpler test: currently we only have a few single-precision 7 # routines for RISC-V soft float (and the other tests are a bit 8 # AEABI-dependent) 9 add_executable(pico_float_test 10 pico_float_test_hazard3.c 11 ) 12 target_link_libraries(pico_float_test PRIVATE pico_float pico_stdlib) 13 target_include_directories(pico_float_test PRIVATE ${CMAKE_CURRENT_LIST_DIR}) 14 pico_add_extra_outputs(pico_float_test) 15 16 # pico_enable_stdio_usb(pico_float_test 1) 17 # pico_enable_stdio_uart(pico_float_test 0) 18 19else () 20 add_executable(pico_float_test 21 pico_float_test.c 22 llvm/call_apsr.S 23 ) 24 25 add_executable(pico_double_test 26 pico_double_test.c 27 llvm/call_apsr.S 28 ) 29 30 31 #todo split out variants with different flags 32 target_compile_definitions(pico_float_test PRIVATE 33 # PICO_FLOAT_PROPAGATE_NANS=1 34 # PICO_DIVIDER_DISABLE_INTERRUPTS=1 35 ) 36 37 #todo split out variants with different flags 38 target_compile_definitions(pico_double_test PRIVATE 39 PICO_USE_CRT_PRINTF=1 # want full precision output 40 PICO_FLOAT_PROPAGATE_NANS=1 41 PICO_DOUBLE_PROPAGATE_NANS=1 42 #PICO_DIVIDER_DISABLE_INTERRUPTS=1 43 ) 44 if (NOT PICO_CLIB STREQUAL "llvm_libc") 45 # raw compiler printf on llvm_libc doesn't currently have floating point 46 pico_set_printf_implementation(pico_double_test compiler) # want full precision output 47 endif() 48 49 # handy for testing we aren't pulling in extra stuff 50 #target_link_options(pico_float_test PRIVATE -nodefaultlibs) 51 52 target_include_directories(pico_float_test PRIVATE ${CMAKE_CURRENT_LIST_DIR}/llvm) 53 target_link_libraries(pico_float_test pico_float pico_stdlib) 54 pico_add_extra_outputs(pico_float_test) 55 #pico_set_float_implementation(pico_float_test compiler) 56 #pico_set_float_implementation(pico_float_test pico_vfp) 57 #pico_set_double_implementation(pico_float_test compiler) 58 59 target_include_directories(pico_double_test PRIVATE ${CMAKE_CURRENT_LIST_DIR}/llvm) 60 target_link_libraries(pico_double_test pico_double pico_stdlib) 61 pico_add_extra_outputs(pico_double_test) 62 #pico_set_float_implementation(pico_double_test compiler) 63 #pico_set_double_implementation(pico_double_test compiler) 64 65 if (PICO_RP2350 AND NOT PICO_RISCV) 66 add_executable(m33 67 m33.c 68 ) 69 70 target_compile_definitions(m33 PRIVATE 71 PICO_USE_CRT_PRINTF=1 # want full precision output 72 PICO_FLOAT_PROPAGATE_NANS=1 73 PICO_DOUBLE_PROPAGATE_NANS=1 74 #PICO_DIVIDER_DISABLE_INTERRUPTS=1 75 ) 76 pico_set_printf_implementation(m33 compiler) # want full precision output 77 pico_set_float_implementation(m33 pico) 78 pico_set_double_implementation(m33 pico) 79 target_link_libraries(m33 pico_double pico_stdlib) 80 pico_add_extra_outputs(m33) 81 endif() 82endif() 83