1*1c468f90Schristos# mach: aarch64
2*1c468f90Schristos
3*1c468f90Schristos# Check the FP Conditional Select instruction: fcsel.
4*1c468f90Schristos# Check 1/1 eq/neg, and 1/2 lt/gt.
5*1c468f90Schristos
6*1c468f90Schristos.include "testutils.inc"
7*1c468f90Schristos
8*1c468f90Schristos	start
9*1c468f90Schristos	fmov s0, #1.0
10*1c468f90Schristos	fmov s1, #1.0
11*1c468f90Schristos	fmov s2, #-1.0
12*1c468f90Schristos	fcmp s0, s1
13*1c468f90Schristos	fcsel s3, s0, s2, eq
14*1c468f90Schristos	fcmp s3, s0
15*1c468f90Schristos	bne .Lfailure
16*1c468f90Schristos	fcsel s3, s0, s2, ne
17*1c468f90Schristos	fcmp s3, s2
18*1c468f90Schristos	bne .Lfailure
19*1c468f90Schristos
20*1c468f90Schristos	fmov s0, #1.0
21*1c468f90Schristos	fmov s1, #2.0
22*1c468f90Schristos	fcmp s0, s1
23*1c468f90Schristos	fcsel s3, s0, s2, lt
24*1c468f90Schristos	fcmp s3, s0
25*1c468f90Schristos	bne .Lfailure
26*1c468f90Schristos	fcsel s3, s0, s2, gt
27*1c468f90Schristos	fcmp s3, s2
28*1c468f90Schristos	bne .Lfailure
29*1c468f90Schristos
30*1c468f90Schristos	fmov d0, #1.0
31*1c468f90Schristos	fmov d1, #1.0
32*1c468f90Schristos	fmov d2, #-1.0
33*1c468f90Schristos	fcmp d0, d1
34*1c468f90Schristos	fcsel d3, d0, d2, eq
35*1c468f90Schristos	fcmp d3, d0
36*1c468f90Schristos	bne .Lfailure
37*1c468f90Schristos	fcsel d3, d0, d2, ne
38*1c468f90Schristos	fcmp d3, d2
39*1c468f90Schristos	bne .Lfailure
40*1c468f90Schristos
41*1c468f90Schristos	fmov d0, #1.0
42*1c468f90Schristos	fmov d1, #2.0
43*1c468f90Schristos	fcmp d0, d1
44*1c468f90Schristos	fcsel d3, d0, d2, lt
45*1c468f90Schristos	fcmp d3, d0
46*1c468f90Schristos	bne .Lfailure
47*1c468f90Schristos	fcsel d3, d0, d2, gt
48*1c468f90Schristos	fcmp d3, d2
49*1c468f90Schristos	bne .Lfailure
50*1c468f90Schristos
51*1c468f90Schristos	pass
52*1c468f90Schristos.Lfailure:
53*1c468f90Schristos	fail
54