1658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat/*
2658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * Copyright (C) 2013 The Android Open Source Project
3658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * All rights reserved.
4658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *
5658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * Redistribution and use in source and binary forms, with or without
6658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * modification, are permitted provided that the following conditions
7658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * are met:
8658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *  * Redistributions of source code must retain the above copyright
9658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *    notice, this list of conditions and the following disclaimer.
10658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *  * Redistributions in binary form must reproduce the above copyright
11658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *    notice, this list of conditions and the following disclaimer in
12658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *    the documentation and/or other materials provided with the
13658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *    distribution.
14658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat *
15658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat * SUCH DAMAGE.
27658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat */
28658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
29658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    .text
30658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    .align
31658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
32658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    .global asm_test_jacket
33658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
34658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Set the register and flag values
35658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Calls the asm function
36658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Reads the register/flag values to output register
37658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
38658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Parameters
39658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // X0 - Function to jump
40658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // X1 - register values array
41658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // X2 - flag values array
42658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatasm_test_jacket:
43658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Save registers to stack
44658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    stp    x29, x30, [sp,#-16]!
45658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    stp    x27, x28, [sp,#-16]!
46658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
47658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    mov x30, x0
48658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    mov x28, x1
49658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    mov x27, x2
50658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
51658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //Set the flags based on flag array
52658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //EQ
53658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#0]
54658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
55658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_aeq
56658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#1
57658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
58658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_aeq:
59658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
60658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //NE
61658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#4]
62658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
63658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_ane
64658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#2
65658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
66658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_ane:
67658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
68658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //CS
69658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#8]
70658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
71658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_acs
72658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#0
73658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
74658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_acs:
75658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
76658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //CC
77658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#12]
78658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
79658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_acc
80658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#2
81658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
82658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_acc:
83658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
84658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //MI
85658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#16]
86658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
87658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_ami
88658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    subs w0,w0,#2
89658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
90658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_ami:
91658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
92658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //PL
93658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#20]
94658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
95658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_apl
96658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    subs w0,w0,#0
97658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
98658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_apl:
99658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //HI - (C==1) && (Z==0)
100658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#32]
101658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
102658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_ahi
103658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#0
104658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
105658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_ahi:
106658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
107658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //LS - (C==0) || (Z==1)
108658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#36]
109658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
110658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_als
111658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#1
112658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
113658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_als:
114658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
115658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //GE
116658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#40]
117658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
118658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_age
119658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#0
120658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
121658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_age:
122658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
123658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //LT
124658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#44]
125658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
126658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_alt
127658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#2
128658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
129658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_alt:
130658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
131658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //GT
132658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#48]
133658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
134658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_agt
135658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#0
136658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
137658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_agt:
138658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
139658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //LE
140658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr w0, [x27,#52]
141658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0, #1
142658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b.ne bt_ale
143658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    cmp w0,#2
144658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    b bt_end
145658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_ale:
146658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
147658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
148658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhatbt_end:
149658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
150658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Load the registers from reg array
151658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x0, [x28,#0]
152658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x1, [x28,#8]
153658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x2, [x28,#16]
154658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x3, [x28,#24]
155658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x4, [x28,#32]
156658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x5, [x28,#40]
157658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x6, [x28,#48]
158658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x7, [x28,#56]
159658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x8, [x28,#64]
160658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x9, [x28,#72]
161658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x10, [x28,#80]
162658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x11, [x28,#88]
163658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x12, [x28,#96]
164658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldr x14, [x28,#112]
165658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
166658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Call the function
167658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    blr X30
168658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
169658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Save the registers to reg array
170658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x0, [x28,#0]
171658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x1, [x28,#8]
172658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x2, [x28,#16]
173658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x3, [x28,#24]
174658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x4, [x28,#32]
175658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x5, [x28,#40]
176658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x6, [x28,#48]
177658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x7, [x28,#56]
178658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x8, [x28,#64]
179658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x9, [x28,#72]
180658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x10, [x28,#80]
181658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x11, [x28,#88]
182658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x12, [x28,#96]
183658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str x14, [x28,#112]
184658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
185658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    //Set the flags array based on result flags
186658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    movz w0, #0
187658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    movz w1, #1
188658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, EQ
189658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#0]
190658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, NE
191658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#4]
192658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, CS
193658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#8]
194658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, CC
195658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#12]
196658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, MI
197658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#16]
198658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, PL
199658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#20]
200658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, VS
201658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#24]
202658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, VC
203658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#28]
204658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, HI
205658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#32]
206658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, LS
207658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#36]
208658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, GE
209658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#40]
210658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, LT
211658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#44]
212658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, GT
213658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#48]
214658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    csel w2, w1, w0, LE
215658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    str w2, [x27,#52]
216658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
217658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    // Restore registers from stack
218658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldp    x27, x28, [sp],#16
219658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ldp    x29, x30, [sp],#16
220658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat    ret
221658f89dc5c418dbbc0c5d78f5861855b90ca8c9fAshok Bhat
222