chore: Rerun `./autogen.sh --maintainer`
diff --git a/Makefile.in b/Makefile.in
index 667f2a4..9b0efb1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -124,18 +124,17 @@
 @PNG_POWERPC_VSX_TRUE@am__append_7 = powerpc/powerpc_init.c\
 @PNG_POWERPC_VSX_TRUE@        powerpc/filter_vsx_intrinsics.c
 
-
-#   Versioned symbols and restricted exports
-@HAVE_LD_VERSION_SCRIPT_TRUE@@HAVE_SOLARIS_LD_TRUE@am__append_8 = -Wl,-M -Wl,libpng.vers
-@HAVE_LD_VERSION_SCRIPT_TRUE@@HAVE_SOLARIS_LD_FALSE@am__append_9 = -Wl,--version-script=libpng.vers
-#   Only restricted exports when possible
-@HAVE_LD_VERSION_SCRIPT_FALSE@am__append_10 = -export-symbols libpng.sym
-@PNG_LOONGARCH_LSX_TRUE@am__append_11 = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
-@DO_PNG_PREFIX_TRUE@am__append_12 = -DPNG_PREFIX='@PNG_PREFIX@'
-
-@PNG_RISCV_RVV_TRUE@am__append_13 = riscv/riscv_init.c\
+@PNG_RISCV_RVV_TRUE@am__append_8 = riscv/riscv_init.c\
 @PNG_RISCV_RVV_TRUE@        riscv/filter_rvv_intrinsics.c
 
+
+#   Versioned symbols and restricted exports
+@HAVE_LD_VERSION_SCRIPT_TRUE@@HAVE_SOLARIS_LD_TRUE@am__append_9 = -Wl,-M -Wl,libpng.vers
+@HAVE_LD_VERSION_SCRIPT_TRUE@@HAVE_SOLARIS_LD_FALSE@am__append_10 = -Wl,--version-script=libpng.vers
+#   Only restricted exports when possible
+@HAVE_LD_VERSION_SCRIPT_FALSE@am__append_11 = -export-symbols libpng.sym
+@PNG_LOONGARCH_LSX_TRUE@am__append_12 = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
+@DO_PNG_PREFIX_TRUE@am__append_13 = -DPNG_PREFIX='@PNG_PREFIX@'
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/scripts/autoconf/libtool.m4 \
@@ -834,7 +833,7 @@
 	pngwutil.c png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h \
 	pngstruct.h pngusr.dfa $(am__append_2) $(am__append_3) \
 	$(am__append_4) $(am__append_5) $(am__append_6) \
-	$(am__append_7) $(am__append_13)
+	$(am__append_7) $(am__append_8)
 @PNG_LOONGARCH_LSX_TRUE@noinst_LTLIBRARIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
 @PNG_LOONGARCH_LSX_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES = loongarch/loongarch_lsx_init.c\
 @PNG_LOONGARCH_LSX_TRUE@	loongarch/filter_lsx_intrinsics.c
@@ -846,11 +845,11 @@
 libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined \
 	-export-dynamic -version-number \
 	@PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0 \
-	$(am__append_8) $(am__append_9) $(am__append_10)
+	$(am__append_9) $(am__append_10) $(am__append_11)
 @HAVE_LD_VERSION_SCRIPT_FALSE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES =  \
-@HAVE_LD_VERSION_SCRIPT_FALSE@	libpng.sym $(am__append_11)
+@HAVE_LD_VERSION_SCRIPT_FALSE@	libpng.sym $(am__append_12)
 @HAVE_LD_VERSION_SCRIPT_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES =  \
-@HAVE_LD_VERSION_SCRIPT_TRUE@	libpng.vers $(am__append_11)
+@HAVE_LD_VERSION_SCRIPT_TRUE@	libpng.vers $(am__append_12)
 pkginclude_HEADERS = png.h pngconf.h
 nodist_pkginclude_HEADERS = pnglibconf.h
 pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc
@@ -884,7 +883,7 @@
 SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0' \
 	-DPNGLIB_VERSION='@PNGLIB_VERSION@' \
 	-DSYMBOL_PREFIX='$(SYMBOL_PREFIX)' -DPNG_NO_USE_READ_MACROS \
-	-DPNG_BUILDING_SYMBOL_TABLE $(am__append_12)
+	-DPNG_BUILDING_SYMBOL_TABLE $(am__append_13)
 
 # EXT_LIST is a list of the possibly library directory extensions, this exists
 # because we can't find a good way of discovering the file extensions that are
@@ -1082,10 +1081,10 @@
 	powerpc/$(DEPDIR)/$(am__dirstamp)
 riscv/$(am__dirstamp):
 	@$(MKDIR_P) riscv
-	@: > riscv/$(am__dirstamp)
+	@: >>riscv/$(am__dirstamp)
 riscv/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) riscv/$(DEPDIR)
-	@: > riscv/$(DEPDIR)/$(am__dirstamp)
+	@: >>riscv/$(DEPDIR)/$(am__dirstamp)
 riscv/riscv_init.lo: riscv/$(am__dirstamp) \
 	riscv/$(DEPDIR)/$(am__dirstamp)
 riscv/filter_rvv_intrinsics.lo: riscv/$(am__dirstamp) \
@@ -1263,6 +1262,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/mips_init.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@powerpc/$(DEPDIR)/powerpc_init.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/filter_rvv_intrinsics.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_init.Plo@am__quote@ # am--include-marker
 
 $(am__depfiles_remade):
 	@$(MKDIR_P) $(@D)
@@ -2170,6 +2171,8 @@
 	-$(am__rm_f) mips/$(am__dirstamp)
 	-$(am__rm_f) powerpc/$(DEPDIR)/$(am__dirstamp)
 	-$(am__rm_f) powerpc/$(am__dirstamp)
+	-$(am__rm_f) riscv/$(DEPDIR)/$(am__dirstamp)
+	-$(am__rm_f) riscv/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/config.h.in b/config.h.in
index 2c6fa28..d931a6e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -114,10 +114,10 @@
 /* Check for RISC-V Vector support at run-time */
 #undef PNG_RISCV_RVV_CHECK_SUPPORTED
 
-/* Enable RISC-V Vector optimizations */
+/* Enable RISCV RVV optimizations */
 #undef PNG_RISCV_RVV_OPT
 
-/* Define to 1 if all of the C90 standard headers exist (not just the ones
+/* Define to 1 if all of the C89 standard headers exist (not just the ones
    required in a freestanding environment). This macro is provided for
    backward compatibility; new code need not use it. */
 #undef STDC_HEADERS
diff --git a/configure b/configure
index e21c00f..75cd1c7 100755
--- a/configure
+++ b/configure
@@ -1593,11 +1593,12 @@
                           no/off: disable the optimizations; yes/on: turn on
                           unconditionally. If not specified: determined by the
                           compiler.
-  --enable-riscv-rvv
-                          Enable RISC-V Vector optimizations: =no/off, yes/on:
-                          no/off: disable the optimizations; yes/on: turn on
-                          unconditionally. If not specified: determined by the
-                          compiler.
+  --enable-riscv-rvv    Enable RISC-V Vector optimizations: =no/off, check,
+                          api, yes/on: no/off: disable the optimizations;
+                          check: use internal checking code api: disable by
+                          default, enable by a call to png_set_option yes/on:
+                          turn on unconditionally. If not specified:
+                          determined by the compiler.
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -15206,10 +15207,11 @@
 printf "%s\n" "#define PNG_LOONGARCH_LSX_OPT 1" >>confdefs.h
 
               ;;
-            riscv*)
+            riscv64)
               enable_riscv_rvv=yes
 
-printf "%s\n" "#define PNG_RISCV_RVV_OPT 1" >>confdefs.h
+printf "%s\n" "#define PNG_RISCV_RVV_OPT 2" >>confdefs.h
+
               ;;
          esac
          ;;
@@ -15566,24 +15568,31 @@
   PNG_LOONGARCH_LSX_FALSE=
 fi
 
-# RISC-V RVV
-# =============
+
+# RISC-V
+# ======
+#
+# RISC-V Vector support.
 
 # Check whether --enable-riscv-rvv was given.
 if test ${enable_riscv_rvv+y}
 then :
   enableval=$enable_riscv_rvv; case "$enableval" in
       no|off)
-         # disable the default enabling on __RVV__ systems:
+         # disable the default enabling on __riscv systems:
 
 printf "%s\n" "#define PNG_RISCV_RVV_OPT 0" >>confdefs.h
 
-         # Prevent inclusion of the assembler files below:
+         # Prevent inclusion of the platform-specific files below:
          enable_riscv_rvv=no ;;
       check)
 
 printf "%s\n" "#define PNG_RISCV_RVV_CHECK_SUPPORTED /**/" >>confdefs.h
-;;
+
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-riscv-rvv Please check contrib/riscv-rvv/README file
+            for the list of supported OSes." >&5
+printf "%s\n" "$as_me: WARNING: --enable-riscv-rvv Please check contrib/riscv-rvv/README file
+            for the list of supported OSes." >&2;};;
       api)
 
 printf "%s\n" "#define PNG_RISCV_RVV_API_SUPPORTED /**/" >>confdefs.h
@@ -15592,27 +15601,61 @@
 
 printf "%s\n" "#define PNG_RISCV_RVV_OPT 2" >>confdefs.h
 
-         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-riscv-rvv: please specify 'check' or 'api';
-            if you want the optimizations unconditionally,
-            pass '-march=rv64gv1p0' or '-march=rv64gcv1p0' to the compiler." >&5
-printf "%s\n" "$as_me: WARNING: --enable-riscv-rvv: please specify 'check' or 'api';
-            if you want the optimizations unconditionally,
-            pass '-march=rv64gv1p0' or '-march=rv64gcv1p0' to the compiler." >&2;};;
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-riscv-rvv: please specify 'check' or 'api', if
+            you want the optimizations unconditionally pass e.g. '-march=rv64gv'
+            to the compiler." >&5
+printf "%s\n" "$as_me: WARNING: --enable-riscv-rvv: please specify 'check' or 'api', if
+            you want the optimizations unconditionally pass e.g. '-march=rv64gv'
+            to the compiler." >&2;};;
       *)
-         as_fn_error $? "--enable-riscv-rvv=${enable_riscv_rvv}:
-                      invalid argument" "$LINENO" 5
+         as_fn_error $? "--enable-riscv-rvv=${enable_riscv_rvv}: invalid value" "$LINENO" 5
    esac
 fi
 
 
-# Add RISCV-specific files to all builds where $host_cpu is RISC-V ('riscv64') or
-# where RISCV optimizations were explicitly requested. (This allows a fallback
-# if a future host CPU does not match 'riscv64'.)
-
- if test "$enable_riscv_rvv" != 'no' &&
-    case "$host_cpu" in
+if test "$enable_riscv_rvv" != "no" &&
+   case "$host_cpu" in
       riscv64) : ;;
       *)    test "$enable_riscv_rvv" != '' ;;
+   esac
+then
+   compiler_support_riscv_rvv=no
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use RISC-V RVV intrinsics" >&5
+printf %s "checking whether to use RISC-V RVV intrinsics... " >&6; }
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <riscv_vector.h>
+int main(){
+   return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  compiler_support_riscv_rvv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $compiler_support_riscv_rvv" >&5
+printf "%s\n" "$compiler_support_riscv_rvv" >&6; }
+   if test "$compiler_support_riscv_rvv" = "yes"; then
+
+printf "%s\n" "#define PNG_RISCV_RVV_OPT 1" >>confdefs.h
+
+   else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Compiler does not support riscv rvv." >&5
+printf "%s\n" "$as_me: WARNING: Compiler does not support riscv rvv." >&2;}
+   fi
+fi
+
+# Add RISC-V-specific files to all builds where $host_cpu is riscv ('riscv64')
+# or where RISC-V optimizations were explicitly requested (this allows a fallback
+# if a future host CPU does not match 'riscv64')
+
+ if test "$enable_riscv_rvv" != "no" &&
+    test "$compiler_support_riscv_rvv" = "yes" &&
+    case "$host_cpu" in
+      riscv64) : ;;
+      *)    test "$compiler_support_riscv_rvv" != '' ;;
     esac; then
   PNG_RISCV_RVV_TRUE=
   PNG_RISCV_RVV_FALSE='#'