1*1c468f90Schristos# mach: aarch64
2*1c468f90Schristos
3*1c468f90Schristos# Check the mov from asimd to general reg instructions: smov, umov.
4*1c468f90Schristos
5*1c468f90Schristos.include "testutils.inc"
6*1c468f90Schristos
7*1c468f90Schristos	.data
8*1c468f90Schristos	.align 4
9*1c468f90Schristosinput:
10*1c468f90Schristos	.word 0x04030201
11*1c468f90Schristos	.word 0x08070605
12*1c468f90Schristos	.word 0xf4f3f2f1
13*1c468f90Schristos	.word 0xf8f7f6f5
14*1c468f90Schristos
15*1c468f90Schristos	start
16*1c468f90Schristos	adrp x0, input
17*1c468f90Schristos	ldr q0, [x0, #:lo12:input]
18*1c468f90Schristos
19*1c468f90Schristos	smov w0, v0.b[0]
20*1c468f90Schristos	smov w3, v0.b[12]
21*1c468f90Schristos	cmp w0, #1
22*1c468f90Schristos	bne .Lfailure
23*1c468f90Schristos	cmp w3, #-11
24*1c468f90Schristos	bne .Lfailure
25*1c468f90Schristos
26*1c468f90Schristos	smov x0, v0.b[1]
27*1c468f90Schristos	smov x3, v0.b[13]
28*1c468f90Schristos	cmp x0, #2
29*1c468f90Schristos	bne .Lfailure
30*1c468f90Schristos	cmp x3, #-10
31*1c468f90Schristos	bne .Lfailure
32*1c468f90Schristos
33*1c468f90Schristos	smov w0, v0.h[0]
34*1c468f90Schristos	smov w1, v0.h[4]
35*1c468f90Schristos	cmp w0, #0x0201
36*1c468f90Schristos	bne .Lfailure
37*1c468f90Schristos	cmp w1, #-3343
38*1c468f90Schristos	bne .Lfailure
39*1c468f90Schristos
40*1c468f90Schristos	smov x0, v0.h[1]
41*1c468f90Schristos	smov x1, v0.h[5]
42*1c468f90Schristos	cmp x0, #0x0403
43*1c468f90Schristos	bne .Lfailure
44*1c468f90Schristos	cmp x1, #-2829
45*1c468f90Schristos	bne .Lfailure
46*1c468f90Schristos
47*1c468f90Schristos	smov x0, v0.s[1]
48*1c468f90Schristos	smov x1, v0.s[3]
49*1c468f90Schristos	mov x2, #0x0605
50*1c468f90Schristos	movk x2, #0x0807, lsl #16
51*1c468f90Schristos	cmp x0, x2
52*1c468f90Schristos	bne .Lfailure
53*1c468f90Schristos	mov w3, #0xf6f5
54*1c468f90Schristos	movk w3, #0xf8f7, lsl #16
55*1c468f90Schristos	sxtw x3, w3
56*1c468f90Schristos	cmp x1, x3
57*1c468f90Schristos	bne .Lfailure
58*1c468f90Schristos
59*1c468f90Schristos	umov w0, v0.b[0]
60*1c468f90Schristos	umov w3, v0.b[12]
61*1c468f90Schristos	cmp w0, #1
62*1c468f90Schristos	bne .Lfailure
63*1c468f90Schristos	cmp w3, #0xf5
64*1c468f90Schristos	bne .Lfailure
65*1c468f90Schristos
66*1c468f90Schristos	umov w0, v0.h[0]
67*1c468f90Schristos	umov w1, v0.h[4]
68*1c468f90Schristos	cmp w0, #0x0201
69*1c468f90Schristos	bne .Lfailure
70*1c468f90Schristos	mov w2, #0xf2f1
71*1c468f90Schristos	cmp w1, w2
72*1c468f90Schristos	bne .Lfailure
73*1c468f90Schristos
74*1c468f90Schristos	umov w0, v0.s[0]
75*1c468f90Schristos	umov w1, v0.s[2]
76*1c468f90Schristos	mov w2, #0x0201
77*1c468f90Schristos	movk w2, #0x0403, lsl #16
78*1c468f90Schristos	cmp w0, w2
79*1c468f90Schristos	bne .Lfailure
80*1c468f90Schristos	mov w3, #0xf2f1
81*1c468f90Schristos	movk w3, #0xf4f3, lsl #16
82*1c468f90Schristos	cmp w1, w3
83*1c468f90Schristos	bne .Lfailure
84*1c468f90Schristos
85*1c468f90Schristos	umov x0, v0.d[0]
86*1c468f90Schristos	adrp x1, input
87*1c468f90Schristos	ldr x2, [x1, #:lo12:input]
88*1c468f90Schristos	cmp x0, x2
89*1c468f90Schristos	bne .Lfailure
90*1c468f90Schristos
91*1c468f90Schristos	pass
92*1c468f90Schristos.Lfailure:
93*1c468f90Schristos	fail
94