diff --git a/gas/testsuite/gas/arm/push-pop.d b/gas/testsuite/gas/arm/push-pop.d
new file mode 100644
index 00000000000..6eabbfaf1ce
--- /dev/null
+++ b/gas/testsuite/gas/arm/push-pop.d
@@ -0,0 +1,14 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: PUSH and POP
+
+# Test the `PUSH' and `POP' instructions
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+0+000 <.*> e52d0004 	push	{r0}		; \(str r0, \[sp, #-4\]!\)
+0+004 <.*> e92d000e 	push	{r1, r2, r3}
+0+008 <.*> e52d9004 	push	{r9}		; \(str r9, \[sp, #-4\]!\)
+0+00c <.*> e49d9004 	pop	{r9}		; \(ldr r9, \[sp\], #4\)
+0+010 <.*> e8bd000e 	pop	{r1, r2, r3}
+0+014 <.*> e49d0004 	pop	{r0}		; \(ldr r0, \[sp\], #4\)
diff --git a/gas/testsuite/gas/arm/push-pop.s b/gas/testsuite/gas/arm/push-pop.s
new file mode 100644
index 00000000000..d86ec9ecadf
--- /dev/null
+++ b/gas/testsuite/gas/arm/push-pop.s
@@ -0,0 +1,8 @@
+	.text
+	.syntax unified
+	push {r0}
+	push {r1, r2, r3}
+	push {r9}
+	pop {r9}
+	pop {r1, r2, r3}
+	pop {r0}
diff --git a/gas/testsuite/gas/arm/stm-ldm.d b/gas/testsuite/gas/arm/stm-ldm.d
new file mode 100644
index 00000000000..564b8bc805a
--- /dev/null
+++ b/gas/testsuite/gas/arm/stm-ldm.d
@@ -0,0 +1,14 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: STM and LDM
+
+# Test the `STM*' and `LDM*' instructions
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+0+000 <.*> e92d0001 	push	{r0}
+0+004 <.*> e92d000e 	push	{r1, r2, r3}
+0+008 <.*> e92d0200 	push	{r9}
+0+00c <.*> e8bd0200 	pop	{r9}
+0+010 <.*> e8bd000e 	pop	{r1, r2, r3}
+0+014 <.*> e8bd0001 	pop	{r0}
diff --git a/gas/testsuite/gas/arm/stm-ldm.s b/gas/testsuite/gas/arm/stm-ldm.s
new file mode 100644
index 00000000000..77bbfbb4f96
--- /dev/null
+++ b/gas/testsuite/gas/arm/stm-ldm.s
@@ -0,0 +1,8 @@
+	.text
+	.syntax unified
+	stmfd	sp!, {r0}
+	stmfd	sp!, {r1, r2, r3}
+	stmfd	sp!, {r9}
+	ldmia sp!, {r9}
+	ldmia sp!, {r1, r2, r3}
+	ldmia sp!, {r0}