Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  memset.S   Sprache: Sparc

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * linux/arch/alpha/lib/memset.S
 *
 * This is an efficient (and small) implementation of the C library "memset()"
 * function for the alpha.
 *
 * (C) Copyright 1996 Linus Torvalds
 *
 * This routine is "moral-ware": you are free to use it any way you wish, and
 * the only obligation I put on you is a moral one: if you make any improvements
 * to the routine, please send me your improvements for me to use similarly.
 *
 * The scheduling comments are according to the EV5 documentation (and done by 
 * hand, so they might well be incorrect, please do tell me about it..)
 */

#include <linux/export.h>
 .set noat
 .set noreorder
.text
 .globl memset
 .globl __memset
 .globl ___memset
 .globl __memset16
 .globl __constant_c_memset

 .ent ___memset
.align 5
___memset:
 .frame $30,0,$26,0
 .prologue 0

 and $17,255,$1  /* E1 */
 insbl $17,1,$17  /* .. E0 */
 bis $17,$1,$17  /* E0 (p-c latency, next cycle) */
 sll $17,16,$1  /* E1 (p-c latency, next cycle) */

 bis $17,$1,$17  /* E0 (p-c latency, next cycle) */
 sll $17,32,$1  /* E1 (p-c latency, next cycle) */
 bis $17,$1,$17  /* E0 (p-c latency, next cycle) */
 ldq_u $31,0($30) /* .. E1 */

.align 5
__constant_c_memset:
 addq $18,$16,$6  /* E0 */
 bis $16,$16,$0  /* .. E1 */
 xor $16,$6,$1  /* E0 */
 ble $18,end  /* .. E1 */

 bic $1,7,$1  /* E0 */
 beq $1,within_one_quad /* .. E1 (note EV5 zero-latency forwarding) */
 and $16,7,$3  /* E0 */
 beq $3,aligned  /* .. E1 (note EV5 zero-latency forwarding) */

 ldq_u $4,0($16)  /* E0 */
 bis $16,$16,$5  /* .. E1 */
 insql $17,$16,$2 /* E0 */
 subq $3,8,$3  /* .. E1 */

 addq $18,$3,$18  /* E0 $18 is new count ($3 is negative) */
 mskql $4,$16,$4  /* .. E1 (and possible load stall) */
 subq $16,$3,$16  /* E0  $16 is new aligned destination */
 bis $2,$4,$1  /* .. E1 */

 bis $31,$31,$31  /* E0 */
 ldq_u $31,0($30) /* .. E1 */
 stq_u $1,0($5)  /* E0 */
 bis $31,$31,$31  /* .. E1 */

.align 4
aligned:
 sra $18,3,$3  /* E0 */
 and $18,7,$18  /* .. E1 */
 bis $16,$16,$5  /* E0 */
 beq $3,no_quad  /* .. E1 */

.align 3
loop:
 stq $17,0($5)  /* E0 */
 subq $3,1,$3  /* .. E1 */
 addq $5,8,$5  /* E0 */
 bne $3,loop  /* .. E1 */

no_quad:
 bis $31,$31,$31  /* E0 */
 beq $18,end  /* .. E1 */
 ldq $7,0($5)  /* E0 */
 mskqh $7,$6,$2  /* .. E1 (and load stall) */

 insqh $17,$6,$4  /* E0 */
 bis $2,$4,$1  /* .. E1 */
 stq $1,0($5)  /* E0 */
 ret $31,($26),1  /* .. E1 */

.align 3
within_one_quad:
 ldq_u $1,0($16)  /* E0 */
 insql $17,$16,$2 /* E1 */
 mskql $1,$16,$4  /* E0 (after load stall) */
 bis $2,$4,$2  /* E0 */

 mskql $2,$6,$4  /* E0 */
 mskqh $1,$6,$2  /* .. E1 */
 bis $2,$4,$1  /* E0 */
 stq_u $1,0($16)  /* E0 */

end:
 ret $31,($26),1  /* E1 */
 .end ___memset
EXPORT_SYMBOL(___memset)
EXPORT_SYMBOL(__constant_c_memset)

 .align 5
 .ent __memset16
__memset16:
 .prologue 0

 inswl $17,0,$1  /* E0 */
 inswl $17,2,$2  /* E0 */
 inswl $17,4,$3  /* E0 */
 or $1,$2,$1  /* .. E1 */
 inswl $17,6,$4  /* E0 */
 or $1,$3,$1  /* .. E1 */
 or $1,$4,$17  /* E0 */
 br __constant_c_memset /* .. E1 */

 .end __memset16
EXPORT_SYMBOL(__memset16)

memset = ___memset
__memset = ___memset
 EXPORT_SYMBOL(memset)
 EXPORT_SYMBOL(__memset)

Messung V0.5
C=85 H=89 G=86

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge