summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/gas/testsuite/gas/arm/bundle-lock.s
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.25/gas/testsuite/gas/arm/bundle-lock.s')
-rw-r--r--binutils-2.25/gas/testsuite/gas/arm/bundle-lock.s64
1 files changed, 64 insertions, 0 deletions
diff --git a/binutils-2.25/gas/testsuite/gas/arm/bundle-lock.s b/binutils-2.25/gas/testsuite/gas/arm/bundle-lock.s
new file mode 100644
index 00000000..b8fa38f6
--- /dev/null
+++ b/binutils-2.25/gas/testsuite/gas/arm/bundle-lock.s
@@ -0,0 +1,64 @@
+ .syntax unified
+ .bundle_align_mode 4
+
+# We use these macros to test each pattern at every offset from
+# bundle alignment, i.e. [0,16) by 2 or 4.
+
+ size_arm = 4
+ size_thumb = 2
+
+.macro offset_sequence which, size, offset
+ .p2align 4
+\which\()_sequence_\size\()_offset_\offset\():
+ .rept \offset / size_\which
+ bkpt
+ .endr
+ test_sequence \size
+.endm
+
+.macro test_offsets_arm size
+ .arm
+ offset_sequence arm, \size, 0
+ offset_sequence arm, \size, 4
+ offset_sequence arm, \size, 8
+ offset_sequence arm, \size, 12
+.endm
+
+.macro test_offsets_thumb size
+ .thumb
+ offset_sequence thumb, \size, 0
+ offset_sequence thumb, \size, 2
+ offset_sequence thumb, \size, 4
+ offset_sequence thumb, \size, 6
+ offset_sequence thumb, \size, 8
+ offset_sequence thumb, \size, 10
+ offset_sequence thumb, \size, 12
+ offset_sequence thumb, \size, 14
+.endm
+
+.macro test_sequence size
+ .bundle_lock
+ adds r0, r1
+ .rept \size - 1
+ subs r0, r1
+ .endr
+ .bundle_unlock
+.endm
+
+ test_offsets_arm 1
+ test_offsets_arm 2
+ test_offsets_arm 3
+ test_offsets_arm 4
+
+ test_offsets_thumb 1
+ test_offsets_thumb 2
+ test_offsets_thumb 3
+ test_offsets_thumb 4
+ test_offsets_thumb 5
+ test_offsets_thumb 6
+ test_offsets_thumb 7
+ test_offsets_thumb 8
+
+ .arm
+.p2align 4
+ bkpt