rockbox/apps/plugins/SOURCES
Michael Giacomelli 73b1afabd3 plugins: test_cyc, a per-instruction cycle benchmark
A test plugin that measures what ARM instructions cost on the running
device. Each row times sixteen copies of one instruction in a loop and
subtracts the empty loop, giving cycles per instruction. Where plugins
get IRAM, each row is run with code and data in each combination of
IRAM and DRAM.

It covers ALU, shifts, branches, the load and store forms (including
halfword and register-offset loads), load-use, and the multiplier at
narrow and full-width operands. ARMv5 adds the DSP multiplies, clz,
qadd, ldrd/strd and pld; ARMv6 adds the top-word and dual 16-bit
multiplies, umaal, ssat, rev, the extends, pkhbt, the SIMD adds and
multiply result latency. Cache misses are priced by a pointer chase
and by sequential streams over working sets either side of the cache.

Timing uses the SoC's microsecond counter on PP502x, PP5002, S5L870x,
S5L8720, TCC7801 and i.MX233, and the tick elsewhere. Results go to
the screen and to /test_cyc.txt.

Built only with test plugins enabled, on native ARM targets that run
ARM code (not Cortex-M).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I4a41f6daaa27fb817f411de89901a117c5c70f4d
2026-10-08 09:08:38 -04:00

246 lines
3.8 KiB
Text

/* plugins common to all models */
#if !defined(SIMULATOR) && (CONFIG_BATTERY_MEASURE != 0)
battery_bench.c
#endif
#ifdef HAVE_TAGCACHE
db_folder_select.c
tagcache/tagcache.c
#endif
chessclock.c
countdown_timer.c
credits.c
cube.c
cue_playlist.c
dart_scorer.c
dict.c
file_picker.c
jackpot.c
keybox.c
keyremap.c
lastfm_scrobbler.c
lastfm_scrobbler_viewer.c
logo.c
lrcplayer.c
mosaique.c
main_menu_config.c
playing_time.c
properties.c
random_folder_advance_config.c
rb_info.c
rockblox.c
search.c
settings_dumper.c
snow.c
sort.c
stats.c
view_text.c
#ifdef HAVE_TOUCHSCREEN
stopwatch.lua
#else
stopwatch.c
#endif
theme_remove.c
vbrfix.c
md5sum.c
dice.c
disktidy.c
flipit.c
shopper.c
resistor.c
otp.c
windows_lnk.c
#ifdef USB_ENABLE_HID
remote_control.c
#endif
#ifdef HAVE_BACKLIGHT
lamp.c
#endif /* HAVE_BACKLIGHT */
#if defined(HAVE_RECORDING) && (defined(HAVE_LINE_IN) || defined(HAVE_MIC_IN))
pitch_detector.c
#endif
#ifdef HAVE_PITCHCONTROL
pitch_screen.c
#endif
mp3_encoder.c
wav2wv.c
#if CONFIG_RTC
alarmclock.c
#endif /* CONFIG_RTC */
/* Platform-specific */
#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES)
iriverify.c
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) /* Requires real hardware */
#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES)
iriver_flash.c
#endif
#if defined(IPOD_NANO2G)
crypt_firmware.c
#endif
#endif
/* Overlays loaders */
#if defined(HAVE_LCD_COLOR) && (LCD_STRIDEFORMAT == HORIZONTAL_STRIDE) && !defined(RG_NANO) /* Build issues */
#if (PLUGIN_BUFFER_SIZE > 0x14000) && (CONFIG_PLATFORM & (PLATFORM_NATIVE |PLATFORM_HOSTED)) && (defined(CPU_ARM) || defined(CPU_MIPS))
duke3d.c
quake.c
wolf3d.c
#endif
#endif
#if PLUGIN_BUFFER_SIZE <= 0x20000
#if CONFIG_KEYPAD != SANSA_M200_PAD \
&& CONFIG_KEYPAD != HM60X_PAD
/* not enough buttons for rockboy */
rockboy.c
#endif
zxbox.c
chessbox.c
goban.c
pictureflow.c
#endif /* PLUGIN_BUFFER_SIZE <= 0x20000 */
metronome.c
2048.c
/* Lua needs at least 160 KB to work in */
#if PLUGIN_BUFFER_SIZE >= 0x80000
boomshine.lua
picross.lua
#ifdef HAVE_LCD_COLOR
pixel-painter.lua
#endif /* HAVE_LCD_COLOR */
#endif /* PLUGIN_BUFFER_SIZE >= 0x80000 */
#if PLUGIN_BUFFER_SIZE > 0x10000 /* Doesn't fit on most 2Mb targets */
amaze.c
#endif
rockblox1d.c
brickmania.c
calendar.c
maze.c
mazezam.c
text_editor.c
wavview.c
robotfindskitten.c
xobox.c
spacerocks.c
blackjack.c
bounce.c
bubbles.c
calculator.c
chip8.c
chopper.c
demystify.c
jewels.c
minesweeper.c
open_plugins.c
oscilloscope.c
pegbox.c
periodic_table.c
pong.c
sliding_puzzle.c
snake.c
snake2.c
solitaire.c
sokoban.c
star.c
starfield.c
vu_meter.c
wormlet.c
#ifdef HAVE_HOTKEY
announce_status.c
#endif
/* can't build in the sim for some reason */
#if defined(HAVE_MULTIBOOT) && !defined(SIMULATOR)
multiboot_select.c
#endif
/* Plugins needing the grayscale lib on low-depth LCDs */
fire.c
plasma.c
#ifdef HAVE_LCD_COLOR
clix.c
codebuster.c
#endif
#if (LCD_WIDTH > 112) && (LCD_HEIGHT > 64)
fireworks.c
#endif
#if LCD_DEPTH == 16
/* FIXME: make it work with 24bit (needs lot of memory) */
rockpaint.c
#endif
rocklife.c
#if LCD_DEPTH > 1 /* non-mono bitmap targets */
matrix.c
speedread.c
#if (LCD_WIDTH > 138)
invadrox.c
superdom.c
#endif
#endif /* LCD_DEPTH > 1 */
#ifdef HAVE_TEST_PLUGINS /* enable in advanced build options */
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
test_boost.c
#endif
test_codec.c
#ifdef HAVE_JPEG
test_core_jpeg.c
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && defined(CPU_ARM) \
&& !defined(CPU_ARM_MICRO)
test_cyc.c
#endif
test_disk.c
test_fps.c
test_gfx.c
test_kbd.c
#if LCD_DEPTH < 4 && !defined(SIMULATOR)
test_scanrate.c
#endif
#ifndef HAVE_LCD_COLOR
test_grey.c
test_greylib_bitmap_scale.c
#endif
test_mem.c
test_mem_jpeg.c
#ifdef HAVE_LCD_COLOR
test_resize.c
#endif
test_sampr.c
#ifdef HAVE_TOUCHSCREEN
test_touchscreen.c
#endif
test_usb.c
test_viewports.c
#endif /* HAVE_TEST_PLUGINS */