@@ -198,8 +198,6 @@ def : WriteRes<WriteFST64, [SiFiveP800LDST]>;
198198let Latency = 4 in {
199199def : WriteRes<WriteLDB, [SiFiveP800Load]>;
200200def : WriteRes<WriteLDH, [SiFiveP800Load]>;
201- }
202- let Latency = 4 in {
203201def : WriteRes<WriteLDW, [SiFiveP800Load]>;
204202def : WriteRes<WriteLDD, [SiFiveP800Load]>;
205203}
@@ -211,11 +209,15 @@ def : WriteRes<WriteFLD64, [SiFiveP800Load]>;
211209}
212210
213211// Atomic memory
214- let Latency = 3 in {
215212def : WriteRes<WriteAtomicSTW, [SiFiveP800LDST]>;
216213def : WriteRes<WriteAtomicSTD, [SiFiveP800LDST]>;
214+
215+ let Latency = 7 in {
217216def : WriteRes<WriteAtomicW, [SiFiveP800LDST]>;
218217def : WriteRes<WriteAtomicD, [SiFiveP800LDST]>;
218+ }
219+
220+ let Latency = 10 in {
219221def : WriteRes<WriteAtomicLDW, [SiFiveP800Load]>;
220222def : WriteRes<WriteAtomicLDD, [SiFiveP800Load]>;
221223}
@@ -253,8 +255,8 @@ def : WriteRes<WriteFDiv16, [SiFiveP800FEXQ1, SiFiveP800FloatDiv]> {
253255 let ReleaseAtCycles = [1, 4];
254256}
255257def : WriteRes<WriteFSqrt16, [SiFiveP800FEXQ1, SiFiveP800FloatDiv]> {
256- let Latency = 18 ;
257- let ReleaseAtCycles = [1, 17 ];
258+ let Latency = 8 ;
259+ let ReleaseAtCycles = [1, 7 ];
258260}
259261
260262// Single precision.
@@ -263,8 +265,8 @@ def : WriteRes<WriteFDiv32, [SiFiveP800FEXQ1, SiFiveP800FloatDiv]> {
263265 let ReleaseAtCycles = [1, 6];
264266}
265267def : WriteRes<WriteFSqrt32, [SiFiveP800FEXQ1, SiFiveP800FloatDiv]> {
266- let Latency = 18 ;
267- let ReleaseAtCycles = [1, 17 ];
268+ let Latency = 14 ;
269+ let ReleaseAtCycles = [1, 13 ];
268270}
269271
270272// Double precision
@@ -273,8 +275,8 @@ def : WriteRes<WriteFDiv64, [SiFiveP800FEXQ1, SiFiveP800FloatDiv]> {
273275 let ReleaseAtCycles = [1, 11];
274276}
275277def : WriteRes<WriteFSqrt64, [SiFiveP800FEXQ1, SiFiveP800FloatDiv]> {
276- let Latency = 33 ;
277- let ReleaseAtCycles = [1, 32 ];
278+ let Latency = 29 ;
279+ let ReleaseAtCycles = [1, 28 ];
278280}
279281
280282// Conversions
0 commit comments