1*e88b412bSchristos# mach: aarch64 2*e88b412bSchristos 3*e88b412bSchristos# Check the FP convert to longer precision: fcvtl, fcvtl2. 4*e88b412bSchristos# Test values 1.5, -1.5, INTMAX, and INT_MIN. 5*e88b412bSchristos 6*e88b412bSchristos.include "testutils.inc" 7*e88b412bSchristos 8*e88b412bSchristos .data 9*e88b412bSchristos .align 4 10*e88b412bSchristosinput: 11*e88b412bSchristos .word 1069547520 12*e88b412bSchristos .word 3217031168 13*e88b412bSchristos .word 1325400064 14*e88b412bSchristos .word 3472883712 15*e88b412bSchristosd1p5: 16*e88b412bSchristos .word 0 17*e88b412bSchristos .word 1073217536 18*e88b412bSchristosdm1p5: 19*e88b412bSchristos .word 0 20*e88b412bSchristos .word -1074266112 21*e88b412bSchristosdimax: 22*e88b412bSchristos .word 0 23*e88b412bSchristos .word 1105199104 24*e88b412bSchristosdimin: 25*e88b412bSchristos .word 0 26*e88b412bSchristos .word -1042284544 27*e88b412bSchristos 28*e88b412bSchristos start 29*e88b412bSchristos adrp x0, input 30*e88b412bSchristos add x0, x0, #:lo12:input 31*e88b412bSchristos ld1 {v0.4s}, [x0] 32*e88b412bSchristos 33*e88b412bSchristos fcvtl v1.2d, v0.2s 34*e88b412bSchristos mov x1, v1.d[0] 35*e88b412bSchristos adrp x2, d1p5 36*e88b412bSchristos ldr x3, [x2, #:lo12:d1p5] 37*e88b412bSchristos cmp x1, x3 38*e88b412bSchristos bne .Lfailure 39*e88b412bSchristos mov x1, v1.d[1] 40*e88b412bSchristos adrp x2, dm1p5 41*e88b412bSchristos ldr x3, [x2, #:lo12:dm1p5] 42*e88b412bSchristos cmp x1, x3 43*e88b412bSchristos bne .Lfailure 44*e88b412bSchristos 45*e88b412bSchristos fcvtl2 v2.2d, v0.4s 46*e88b412bSchristos mov x1, v2.d[0] 47*e88b412bSchristos adrp x2, dimax 48*e88b412bSchristos ldr x3, [x2, #:lo12:dimax] 49*e88b412bSchristos cmp x1, x3 50*e88b412bSchristos bne .Lfailure 51*e88b412bSchristos mov x1, v2.d[1] 52*e88b412bSchristos adrp x2, dimin 53*e88b412bSchristos ldr x3, [x2, #:lo12:dimin] 54*e88b412bSchristos cmp x1, x3 55*e88b412bSchristos bne .Lfailure 56*e88b412bSchristos 57*e88b412bSchristos pass 58*e88b412bSchristos.Lfailure: 59*e88b412bSchristos fail 60