aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/aarch64/fstur.s
blob: 80e5c67abe0b0e0d7827b2c06e5e6ad285002d52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# mach: aarch64

# Check the FP store unscaled offset instructions: fsturs, fsturd, fsturq.
# Check the values -1, and XXX_MAX, which tests all bits.
# Check with offsets -256 and 255, which tests all bits.
# Also tests the FP load unscaled offset instructions: fldurs, fldurd, fldurq.

.include "testutils.inc"

	.data
	.align 4
fm1:
	.word 3212836864
fmax:
	.word 2139095039
ftmp:
	.word 0

dm1:
	.word 0
	.word -1074790400
dmax:
	.word 4294967295
	.word 2146435071
dtmp:
	.word 0
	.word 0

ldm1:
	.word	0
	.word	0
	.word	0
	.word	-1073807360
ldmax:
	.word	4294967295
	.word	4294967295
	.word	4294967295
	.word	2147418111
ldtmp:
	.word 0
	.word 0
	.word 0
	.word 0

	start
	adrp x1, ftmp
	add x1, x1, :lo12:ftmp

	adrp x0, fm1
	add x0, x0, :lo12:fm1
	sub x5, x0, #255
	sub x6, x1, #255
	movi d2, #0
	ldur s2, [x5, #255]
	stur s2, [x6, #255]
	ldr w3, [x0]
	ldr w4, [x1]
	cmp w3, w4
	bne .Lfailure

	adrp x0, fmax
	add x0, x0, :lo12:fmax
	add x5, x0, #256
	add x6, x1, #256
	movi d2, #0
	ldur s2, [x5, #-256]
	stur s2, [x6, #-256]
	ldr w3, [x0]
	ldr w4, [x1]
	cmp w3, w4
	bne .Lfailure

	adrp x1, dtmp
	add x1, x1, :lo12:dtmp

	adrp x0, dm1
	add x0, x0, :lo12:dm1
	sub x5, x0, #255
	sub x6, x1, #255
	movi d2, #0
	ldur d2, [x5, #255]
	stur d2, [x6, #255]
	ldr x3, [x0]
	ldr x4, [x1]
	cmp x3, x4
	bne .Lfailure

	adrp x0, dmax
	add x0, x0, :lo12:dmax
	add x5, x0, #256
	add x6, x1, #256
	movi d2, #0
	ldur d2, [x5, #-256]
	stur d2, [x6, #-256]
	ldr x3, [x0]
	ldr x4, [x1]
	cmp x3, x4
	bne .Lfailure

	adrp x1, ldtmp
	add x1, x1, :lo12:ldtmp

	adrp x0, ldm1
	add x0, x0, :lo12:ldm1
	sub x5, x0, #255
	sub x6, x1, #255
	movi v2.2d, #0
	ldur q2, [x5, #255]
	stur q2, [x6, #255]
	ldr x3, [x0]
	ldr x4, [x1]
	cmp x3, x4
	bne .Lfailure
	ldr x3, [x0, 8]
	ldr x4, [x1, 8]
	cmp x3, x4
	bne .Lfailure

	adrp x0, ldmax
	add x0, x0, :lo12:ldmax
	add x5, x0, #256
	add x6, x1, #256
	movi v2.2d, #0
	ldur q2, [x5, #-256]
	stur q2, [x6, #-256]
	ldr x3, [x0]
	ldr x4, [x1]
	cmp x3, x4
	bne .Lfailure
	ldr x3, [x0, 8]
	ldr x4, [x1, 8]
	cmp x3, x4
	bne .Lfailure

	pass
.Lfailure:
	fail