c_br_preg_stall_ac.s 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //Original:/testcases/seq/c_br_preg_stall_ac/c_br_preg_stall_ac.dsp
  2. // Spec Reference: brcc kills data cache hits
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. /* This test likes to assume the current [SP] is valid */
  7. SP += -12;
  8. imm32 r0, 0x00000000;
  9. imm32 r1, 0x00000001;
  10. imm32 r2, 0x00000002;
  11. imm32 r3, 0x00000003;
  12. imm32 r4, 0x00000004;
  13. imm32 r5, 0x00000005;
  14. imm32 r6, 0x00000006;
  15. imm32 r7, 0x00000007;
  16. imm32 p1, 0x00000011;
  17. imm32 p2, 0x00000012;
  18. .ifndef BFIN_HOST;
  19. imm32 p3, 0x00000013;
  20. .endif
  21. imm32 p4, 0x00000014;
  22. P1 = 4;
  23. P2 = 6;
  24. loadsym P5, DATA0;
  25. loadsym I0, DATA1;
  26. begin:
  27. ASTAT = R0; // clear CC
  28. R0 = CC;
  29. IF CC R1 = R0;
  30. [ SP ] = P2;
  31. P2 = [ SP ];
  32. JUMP ( PC + P2 ); //brf LABEL1; // (bp);
  33. CC = R4 < R5; // CC FLAG killed
  34. R1 = 21;
  35. LABEL1:
  36. JUMP ( PC + P1 ); // EX1 relative to 'brf LABEL1'
  37. CC = ! CC;
  38. LABEL2:
  39. JUMP ( PC + P1 ); //brf LABEL3;
  40. JUMP ( PC + P2 ); //BAD1; // UJUMP killed
  41. LABEL3:
  42. JUMP ( PC + P1 ); //brf LABELCHK1;
  43. BAD1:
  44. R7 = [ P5 ]; // LDST killed
  45. LABELCHK1:
  46. CHECKREG r0, 0x00000000;
  47. CHECKREG r1, 0x00000001;
  48. CHECKREG r2, 0x00000002;
  49. CHECKREG r3, 0x00000003;
  50. CHECKREG r4, 0x00000004;
  51. CHECKREG r5, 0x00000005;
  52. CHECKREG r6, 0x00000006;
  53. CHECKREG r7, 0x00000007;
  54. pass
  55. .data
  56. DATA0:
  57. .dd 0x000a0000
  58. .dd 0x000b0001
  59. .dd 0x000c0002
  60. .dd 0x000d0003
  61. .dd 0x000e0004
  62. DATA1:
  63. .dd 0x00f00100
  64. .dd 0x00e00101
  65. .dd 0x00d00102
  66. .dd 0x00c00103