xtl.s 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #mach: aarch64
  2. # Check the extend long instructions: sxtl, sxtl2, uxtl, uxtl2.
  3. .include "testutils.inc"
  4. .data
  5. .align 4
  6. input:
  7. .word 0x04030201
  8. .word 0x08070605
  9. .word 0xfcfdfeff
  10. .word 0xf8f9fafb
  11. start
  12. adrp x0, input
  13. ldr q0, [x0, #:lo12:input]
  14. uxtl v1.8h, v0.8b
  15. uxtl2 v2.8h, v0.16b
  16. addv h3, v1.8h
  17. addv h4, v2.8h
  18. mov x1, v3.d[0]
  19. mov x2, v4.d[0]
  20. cmp x1, #36
  21. bne .Lfailure
  22. cmp x2, #2012
  23. bne .Lfailure
  24. uxtl v1.4s, v0.4h
  25. uxtl2 v2.4s, v0.8h
  26. addv s3, v1.4s
  27. addv s4, v2.4s
  28. mov x1, v3.d[0]
  29. mov x2, v4.d[0]
  30. mov x3, #5136
  31. cmp x1, x3
  32. bne .Lfailure
  33. mov x4, #0xeff0
  34. movk x4, 0x3, lsl #16
  35. cmp x2, x4
  36. bne .Lfailure
  37. uxtl v1.2d, v0.2s
  38. uxtl2 v2.2d, v0.4s
  39. addv s3, v1.4s
  40. addv s4, v2.4s
  41. mov x1, v3.d[0]
  42. mov x2, v4.d[0]
  43. mov x3, #0x0806
  44. movk x3, #0x0c0a, lsl #16
  45. cmp x1, x3
  46. bne .Lfailure
  47. mov x4, #0xf9fa
  48. movk x4, #0xf5f7, lsl #16
  49. cmp x2, x4
  50. bne .Lfailure
  51. sxtl v1.8h, v0.8b
  52. sxtl2 v2.8h, v0.16b
  53. addv h3, v1.8h
  54. addv h4, v2.8h
  55. mov x1, v3.d[0]
  56. mov x2, v4.d[0]
  57. cmp x1, #36
  58. bne .Lfailure
  59. mov x3, #0xffdc
  60. cmp x2, x3
  61. bne .Lfailure
  62. sxtl v1.4s, v0.4h
  63. sxtl2 v2.4s, v0.8h
  64. addv s3, v1.4s
  65. addv s4, v2.4s
  66. mov x1, v3.d[0]
  67. mov x2, v4.d[0]
  68. mov x3, #5136
  69. cmp x1, x3
  70. bne .Lfailure
  71. mov x4, #0xeff0
  72. movk x4, 0xffff, lsl #16
  73. bne .Lfailure
  74. sxtl v1.2d, v0.2s
  75. sxtl2 v2.2d, v0.4s
  76. addv s3, v1.4s
  77. addv s4, v2.4s
  78. mov x1, v3.d[0]
  79. mov x2, v4.d[0]
  80. mov x3, #0x0806
  81. movk x3, #0x0c0a, lsl #16
  82. cmp x1, x3
  83. bne .Lfailure
  84. mov x4, #0xf9f8
  85. movk x4, #0xf5f7, lsl #16
  86. cmp x2, x4
  87. bne .Lfailure
  88. pass
  89. .Lfailure:
  90. fail