pushpop.s 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # sh testcase for push/pop (mov,movml,movmu...) insns.
  2. # mach: all
  3. # as(sh): -defsym sim_cpu=0
  4. # as(shdsp): -defsym sim_cpu=1 -dsp
  5. .include "testutils.inc"
  6. start
  7. movml_1:
  8. set_greg 0, r0
  9. set_greg 1, r1
  10. set_greg 2, r2
  11. set_greg 3, r3
  12. set_greg 4, r4
  13. set_greg 5, r5
  14. set_greg 6, r6
  15. set_greg 7, r7
  16. set_greg 8, r8
  17. set_greg 9, r9
  18. set_greg 10, r10
  19. set_greg 11, r11
  20. set_greg 12, r12
  21. set_greg 13, r13
  22. set_greg 14, r14
  23. set_sreg 15, pr
  24. movml.l r15,@-r15
  25. assertmem stackt-4, 15
  26. assertmem stackt-8, 14
  27. assertmem stackt-12, 13
  28. assertmem stackt-16, 12
  29. assertmem stackt-20, 11
  30. assertmem stackt-24, 10
  31. assertmem stackt-28, 9
  32. assertmem stackt-32, 8
  33. assertmem stackt-36, 7
  34. assertmem stackt-40, 6
  35. assertmem stackt-44, 5
  36. assertmem stackt-48, 4
  37. assertmem stackt-52, 3
  38. assertmem stackt-56, 2
  39. assertmem stackt-60, 1
  40. assertmem stackt-64, 0
  41. assertreg0 0
  42. assertreg 1, r1
  43. assertreg 2, r2
  44. assertreg 3, r3
  45. assertreg 4, r4
  46. assertreg 5, r5
  47. assertreg 6, r6
  48. assertreg 7, r7
  49. assertreg 8, r8
  50. assertreg 9, r9
  51. assertreg 10, r10
  52. assertreg 11, r11
  53. assertreg 12, r12
  54. assertreg 13, r13
  55. assertreg 14, r14
  56. mov r15, r0
  57. assertreg0 stackt-64
  58. movml_2:
  59. set_grs_a5a5
  60. movml.l @r15+, r15
  61. assert_sreg 15, pr
  62. assertreg0 0
  63. assertreg 1, r1
  64. assertreg 2, r2
  65. assertreg 3, r3
  66. assertreg 4, r4
  67. assertreg 5, r5
  68. assertreg 6, r6
  69. assertreg 7, r7
  70. assertreg 8, r8
  71. assertreg 9, r9
  72. assertreg 10, r10
  73. assertreg 11, r11
  74. assertreg 12, r12
  75. assertreg 13, r13
  76. assertreg 14, r14
  77. mov r15, r0
  78. assertreg0 stackt
  79. movmu_1:
  80. set_grs_a5a5
  81. add #1,r14
  82. add #2,r13
  83. add #3,r12
  84. set_sreg 0xa5a5,pr
  85. movmu.l r12,@-r15
  86. assert_sreg 0xa5a5,pr
  87. assertreg 0xa5a5a5a6, r14
  88. assertreg 0xa5a5a5a7, r13
  89. assertreg 0xa5a5a5a8, r12
  90. test_gr_a5a5 r11
  91. test_gr_a5a5 r10
  92. test_gr_a5a5 r9
  93. test_gr_a5a5 r8
  94. test_gr_a5a5 r7
  95. test_gr_a5a5 r6
  96. test_gr_a5a5 r5
  97. test_gr_a5a5 r4
  98. test_gr_a5a5 r3
  99. test_gr_a5a5 r2
  100. test_gr_a5a5 r1
  101. test_gr_a5a5 r0
  102. mov r15, r0
  103. assertreg stackt-16, r0
  104. assertmem stackt-4, 0xa5a5
  105. assertmem stackt-8, 0xa5a5a5a6
  106. assertmem stackt-12, 0xa5a5a5a7
  107. assertmem stackt-16, 0xa5a5a5a8
  108. movmu_2:
  109. set_grs_a5a5
  110. movmu.l @r15+,r12
  111. assert_sreg 0xa5a5, pr
  112. assertreg 0xa5a5a5a6, r14
  113. assertreg 0xa5a5a5a7, r13
  114. assertreg 0xa5a5a5a8, r12
  115. test_gr_a5a5 r11
  116. test_gr_a5a5 r10
  117. test_gr_a5a5 r9
  118. test_gr_a5a5 r8
  119. test_gr_a5a5 r7
  120. test_gr_a5a5 r6
  121. test_gr_a5a5 r5
  122. test_gr_a5a5 r4
  123. test_gr_a5a5 r3
  124. test_gr_a5a5 r2
  125. test_gr_a5a5 r1
  126. test_gr_a5a5 r0
  127. mov r15, r0
  128. assertreg stackt, r0
  129. pass
  130. exit 0