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