Index: src/cmd/compile/internal/ssa/_gen/RISCV64.rules
--- src/cmd/compile/internal/ssa/_gen/RISCV64.rules.orig
+++ src/cmd/compile/internal/ssa/_gen/RISCV64.rules
@@ -380,7 +380,7 @@
 // 8 and 128 are magic constants, see runtime/mkduff.go
 (Zero [s] {t} ptr mem)
 	&& s%8 == 0 && s <= 8*128
-	&& t.Alignment()%8 == 0 =>
+	&& t.Alignment()%8 == 0 && !config.noDuffDevice =>
 	(DUFFZERO [8 * (128 - s/8)] ptr mem)
 
 // Generic zeroing uses a loop
@@ -469,7 +469,7 @@
 // 16 and 128 are magic constants, see runtime/mkduff.go
 (Move [s] {t} dst src mem)
 	&& s%8 == 0 && s <= 8*128 && t.Alignment()%8 == 0
-	&& logLargeCopy(v, s) =>
+	&& !config.noDuffDevice && logLargeCopy(v, s) =>
 	(DUFFCOPY [16 * (128 - s/8)] dst src mem)
 
 // Generic move uses a loop
