Lines Matching +full:- +full:- +full:hard
1 …< %s -march=sparc -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s --check-pref…
2 … %s -march=sparcel -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s --check-pre…
3 …-march=sparc -disable-sparc-delay-filler -disable-sparc-leaf-proc -mattr=soft-float | FileCheck %s…
5 ; CHECK-LABEL: intarg:
8 ; CHECK: save %sp, -96, %sp
9 ; CHECK: ld [%fp+96], [[R2:%[gilo][0-7]]]
10 ; CHECK: ld [%fp+92], [[R1:%[gilo][0-7]]]
42 ; CHECK-LABEL: call_intarg:
43 ; CHECK: save %sp, -104, %sp
44 ; Use %o0-%o5 for outgoing arguments
48 ; CHECK-NOT: add %sp
58 ; CHECK-LABEL: floatarg:
59 ; HARD: save %sp, -120, %sp
60 ; HARD: mov %i5, %g2
61 ; HARD-NEXT: ld [%fp+92], %g3
62 ; HARD-NEXT: mov %i4, %i5
63 ; HARD-NEXT: ! kill
64 ; HARD-NEXT: std %g2, [%fp+-24]
65 ; HARD-NEXT: mov %i3, %i4
66 ; HARD-NEXT: std %i4, [%fp+-16]
67 ; HARD-NEXT: ! kill
68 ; HARD-NEXT: std %i0, [%fp+-8]
69 ; HARD-NEXT: st %i2, [%fp+-28]
70 ; HARD-NEXT: ld [%fp+104], %f0
71 ; HARD-NEXT: ldd [%fp+96], %f2
72 ; HARD-NEXT: ld [%fp+-28], %f1
73 ; HARD-NEXT: ldd [%fp+-8], %f4
74 ; HARD-NEXT: ldd [%fp+-16], %f6
75 ; HARD-NEXT: ldd [%fp+-24], %f8
76 ; HARD-NEXT: fstod %f1, %f10
77 ; HARD-NEXT: faddd %f4, %f10, %f4
78 ; HARD-NEXT: faddd %f6, %f4, %f4
79 ; HARD-NEXT: faddd %f8, %f4, %f4
80 ; HARD-NEXT: faddd %f2, %f4, %f2
81 ; HARD-NEXT: fstod %f0, %f0
82 ; HARD-NEXT: faddd %f0, %f2, %f0
83 ; SOFT: save %sp, -96, %sp
85 ; SOFT-NEXT: ld [%fp+96], %l1
86 ; SOFT-NEXT: ld [%fp+100], %l2
87 ; SOFT-NEXT: ld [%fp+92], %l3
88 ; SOFT-NEXT: mov %i2, %o0
89 ; SOFT-NEXT: call __extendsfdf2
90 ; SOFT-NEXT: nop
91 ; SOFT-NEXT: mov %o0, %i2
92 ; SOFT-NEXT: mov %o1, %g2
93 ; SOFT-NEXT: mov %i0, %o0
94 ; SOFT-NEXT: mov %i1, %o1
95 ; SOFT-NEXT: mov %i2, %o2
96 ; SOFT-NEXT: mov %g2, %o3
97 ; SOFT-NEXT: call __adddf3
98 ; SOFT-NEXT: nop
99 ; SOFT-NEXT: mov %o0, %i0
100 ; SOFT-NEXT: mov %o1, %i1
101 ; SOFT-NEXT: mov %i3, %o0
102 ; SOFT-NEXT: mov %i4, %o1
103 ; SOFT-NEXT: mov %i0, %o2
104 ; SOFT-NEXT: mov %i1, %o3
105 ; SOFT-NEXT: call __adddf3
106 ; SOFT-NEXT: nop
107 ; SOFT-NEXT: mov %o0, %i0
108 ; SOFT-NEXT: mov %o1, %i1
109 ; SOFT-NEXT: mov %i5, %o0
110 ; SOFT-NEXT: mov %l3, %o1
111 ; SOFT-NEXT: mov %i0, %o2
112 ; SOFT-NEXT: mov %i1, %o3
113 ; SOFT-NEXT: call __adddf3
114 ; SOFT-NEXT: nop
115 ; SOFT-NEXT: mov %o0, %i0
116 ; SOFT-NEXT: mov %o1, %i1
117 ; SOFT-NEXT: mov %l1, %o0
118 ; SOFT-NEXT: mov %l2, %o1
119 ; SOFT-NEXT: mov %i0, %o2
120 ; SOFT-NEXT: mov %i1, %o3
121 ; SOFT-NEXT: call __adddf3
122 ; SOFT-NEXT: nop
123 ; SOFT-NEXT: mov %o0, %i0
124 ; SOFT-NEXT: mov %o1, %i1
125 ; SOFT-NEXT: mov %l0, %o0
126 ; SOFT-NEXT: call __extendsfdf2
127 ; SOFT-NEXT: nop
128 ; SOFT-NEXT: mov %i0, %o2
129 ; SOFT-NEXT: mov %i1, %o3
130 ; SOFT-NEXT: call __adddf3
131 ; SOFT-NEXT: nop
132 ; SOFT-NEXT: mov %o0, %i0
133 ; SOFT-NEXT: mov %o1, %i1
151 ; CHECK-LABEL: call_floatarg:
152 ; HARD: save %sp, -112, %sp
153 ; HARD: mov %i2, %o1
154 ; HARD-NEXT: mov %i1, %o0
155 ; HARD-NEXT: st %i0, [%sp+104]
156 ; HARD-NEXT: std %o0, [%sp+96]
157 ; HARD-NEXT: st %o1, [%sp+92]
158 ; HARD-NEXT: mov %i0, %o2
159 ; HARD-NEXT: mov %o0, %o3
160 ; HARD-NEXT: mov %o1, %o4
161 ; HARD-NEXT: mov %o0, %o5
162 ; HARD-NEXT: call floatarg
163 ; HARD: std %f0, [%i4]
165 ; SOFT-NEXT: st %i2, [%sp+100]
166 ; SOFT-NEXT: st %i1, [%sp+96]
167 ; SOFT-NEXT: st %i2, [%sp+92]
168 ; SOFT-NEXT: mov %i1, %o0
169 ; SOFT-NEXT: mov %i2, %o1
170 ; SOFT-NEXT: mov %i0, %o2
171 ; SOFT-NEXT: mov %i1, %o3
172 ; SOFT-NEXT: mov %i2, %o4
173 ; SOFT-NEXT: mov %i1, %o5
174 ; SOFT-NEXT: call floatarg
185 ;; into two locations. This is different for little-endian vs big
186 ;; endian, since the 64-bit math needs to be split
187 ; CHECK-LABEL: i64arg:
188 ; CHECK: save %sp, -96, %sp
189 ; CHECK-BE: ld [%fp+100], %g2
190 ; CHECK-BE-NEXT: ld [%fp+96], %g3
191 ; CHECK-BE-NEXT: ld [%fp+92], %g4
192 ; CHECK-BE-NEXT: addcc %i1, %i2, %i1
193 ; CHECK-BE-NEXT: addxcc %i0, 0, %i0
194 ; CHECK-BE-NEXT: addcc %i4, %i1, %i1
195 ; CHECK-BE-NEXT: addxcc %i3, %i0, %i0
196 ; CHECK-BE-NEXT: addcc %g4, %i1, %i1
197 ; CHECK-BE-NEXT: ld [%fp+104], %i2
198 ; CHECK-BE-NEXT: addxcc %i5, %i0, %i0
199 ; CHECK-BE-NEXT: addcc %g2, %i1, %i1
200 ; CHECK-BE-NEXT: addxcc %g3, %i0, %i0
201 ; CHECK-BE-NEXT: addcc %i2, %i1, %i1
202 ; CHECK-BE-NEXT: addxcc %i0, 0, %i0
204 ; CHECK-LE: ld [%fp+96], %g2
205 ; CHECK-LE-NEXT: ld [%fp+100], %g3
206 ; CHECK-LE-NEXT: ld [%fp+92], %g4
207 ; CHECK-LE-NEXT: addcc %i0, %i2, %i0
208 ; CHECK-LE-NEXT: addxcc %i1, 0, %i1
209 ; CHECK-LE-NEXT: addcc %i3, %i0, %i0
210 ; CHECK-LE-NEXT: addxcc %i4, %i1, %i1
211 ; CHECK-LE-NEXT: addcc %i5, %i0, %i0
212 ; CHECK-LE-NEXT: ld [%fp+104], %i2
213 ; CHECK-LE-NEXT: addxcc %g4, %i1, %i1
214 ; CHECK-LE-NEXT: addcc %g2, %i0, %i0
215 ; CHECK-LE-NEXT: addxcc %g3, %i1, %i1
216 ; CHECK-LE-NEXT: addcc %i2, %i0, %i0
217 ; CHECK-LE-NEXT: addxcc %i1, 0, %i1
218 ; CHECK-NEXT: restore
237 ; CHECK-LABEL: call_i64arg:
238 ; CHECK: save %sp, -112, %sp
240 ; CHECK-NEXT: st %i2, [%sp+100]
241 ; CHECK-NEXT: st %i1, [%sp+96]
242 ; CHECK-NEXT: st %i2, [%sp+92]
243 ; CHECK-NEXT: mov %i1, %o0
244 ; CHECK-NEXT: mov %i2, %o1
245 ; CHECK-NEXT: mov %i0, %o2
246 ; CHECK-NEXT: mov %i1, %o3
247 ; CHECK-NEXT: mov %i2, %o4
248 ; CHECK-NEXT: mov %i1, %o5
249 ; CHECK-NEXT: call i64arg
251 ; CHECK-NEXT: restore