#/* $begin ncopy-ys */ ##################################################################

ncopy.ys - Copy a src block of len words to dst.

Return the number of positive words (>0) contained in src.

Include your name and ID here.

Describe how and why you modified the baseline code.

##################################################################

Do not modify this portion

Function prologue.

%rdi = src, %rsi = dst, %rdx = len

ncopy:

##################################################################

You can modify this portion

# Loop header
xorq %rax,%rax		# count = 0;
andq %rdx,%rdx		# len <= 0?
jle Done		# if so, goto Done:

Loop: mrmovq (%rdi), %r10 # read val from src... rmmovq %r10, (%rsi) # ...and store it to dst andq %r10, %r10 # val <= 0? jle Npos # if so, goto Npos: iaddq $1, %rax Npos:
iaddq $-1, %rdx # len-- iaddq $8, %rdi # src++ iaddq $8, %rsi # dst++ andq %rdx,%rdx # len > 0? jg Loop # if so, goto Loop:

# Loop unrolling
mrmovq 8(%rdi), %r10
rmmovq %r10, 8(%rsi)
andq %r10, %r10
jle Npos2
iaddq $1, %rax

Npos2: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop2

mrmovq 16(%rdi), %r10
rmmovq %r10, 16(%rsi)
andq %r10, %r10
jle Npos3
iaddq $1, %rax

Npos3: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop3

mrmovq 24(%rdi), %r10
rmmovq %r10, 24(%rsi)
andq %r10, %r10
jle Npos4
iaddq $1, %rax

Npos4: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop4

mrmovq 32(%rdi), %r10
rmmovq %r10, 32(%rsi)
andq %r10, %r10
jle Npos5
iaddq $1, %rax

Npos5: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop5

mrmovq 40(%rdi), %r10
rmmovq %r10, 40(%rsi)
andq %r10, %r10
jle Npos6
iaddq $1, %rax

Npos6: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop6

mrmovq 48(%rdi), %r10
rmmovq %r10, 48(%rsi)
andq %r10, %r10
jle Npos7
iaddq $1, %rax

Npos7: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop7

mrmovq 56(%rdi), %r10
rmmovq %r10, 56(%rsi)
andq %r10, %r10
jle Npos8
iaddq $1, %rax

Npos8: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop8

mrmovq 64(%rdi), %r10
rmmovq %r10, 64(%rsi)
andq %r10, %r10
jle Npos9
iaddq $1, %rax

Npos9: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop9

mrmovq 72(%rdi), %r10
rmmovq %r10, 72(%rsi)
andq %r10, %r10
jle Npos10
iaddq $1, %rax

Npos10: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop10

mrmovq 80(%rdi), %r10
rmmovq %r10, 80(%rsi)
andq %r10, %r10
jle Npos11
iaddq $1, %rax

Npos11: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop11

mrmovq 88(%rdi), %r10
rmmovq %r10, 88(%rsi)
andq %r10, %r10
jle Npos12
iaddq $1, %rax

Npos12: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop12

mrmovq 96(%rdi), %r10
rmmovq %r10, 96(%rsi)
andq %r10, %r10
jle Npos13
iaddq $1, %rax

Npos13: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop13

mrmovq 104(%rdi), %r10
rmmovq %r10, 104(%rsi)
andq %r10, %r10
jle Npos14
iaddq $1, %rax

Npos14: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop14

mrmovq 112(%rdi), %r10
rmmovq %r10, 112(%rsi)
andq %r10, %r10
jle Npos15
iaddq $1, %rax

Npos15: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop15

mrmovq 120(%rdi), %r10
rmmovq %r10, 120(%rsi)
andq %r10, %r10
jle Npos16
iaddq $1, %rax

Npos16: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop16

mrmovq 128(%rdi), %r10
rmmovq %r10, 128(%rsi)
andq %r10, %r10
jle Npos17
iaddq $1, %rax

Npos17: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop17

mrmovq 136(%rdi), %r10
rmmovq %r10, 136(%rsi)
andq %r10, %r10
jle Npos18
iaddq $1, %rax

Npos18: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop18

mrmovq 144(%rdi), %r10
rmmovq %r10, 144(%rsi)
andq %r10, %r10
jle Npos19
iaddq $1, %rax

Npos19: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop19

mrmovq 152(%rdi), %r10
rmmovq %r10, 152(%rsi)
andq %r10, %r10
jle Npos20
iaddq $1, %rax

Npos20: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop20

mrmovq 160(%rdi), %r10
rmmovq %r10, 160(%rsi)
andq %r10, %r10
jle Npos21
iaddq $1, %rax

Npos21: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop21

mrmovq 168(%rdi), %r10
rmmovq %r10, 168(%rsi)
andq %r10, %r10
jle Npos22
iaddq $1, %rax

Npos22: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop22

mrmovq 176(%rdi), %r10
rmmovq %r10, 176(%rsi)
andq %r10, %r10
jle Npos23
iaddq $1, %rax

Npos23: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop23

mrmovq 184(%rdi), %r10
rmmovq %r10, 184(%rsi)
andq %r10, %r10
jle Npos24
iaddq $1, %rax

Npos24: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop24

mrmovq 192(%rdi), %r10
rmmovq %r10, 192(%rsi)
andq %r10, %r10
jle Npos25
iaddq $1, %rax

Npos25: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop25

mrmovq 200(%rdi), %r10
rmmovq %r10, 200(%rsi)
andq %r10, %r10
jle Npos26
iaddq $1, %rax

Npos26: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop26

mrmovq 208(%rdi), %r10
rmmovq %r10, 208(%rsi)
andq %r10, %r10
jle Npos27
iaddq $1, %rax

Npos27: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop27

mrmovq 216(%rdi), %r10
rmmovq %r10, 216(%rsi)
andq %r10, %r10
jle Npos28
iaddq $1, %rax

Npos28: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop28

mrmovq 224(%rdi), %r10
rmmovq %r10, 224(%rsi)
andq %r10, %r10
jle Npos29
iaddq $1, %rax

Npos29: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop29

mrmovq 232(%rdi), %r10
rmmovq %r10, 232(%rsi)
andq %r10, %r10
jle Npos30
iaddq $1, %rax

Npos30: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop30

mrmovq 240(%rdi), %r10
rmmovq %r10, 240(%rsi)
andq %r10, %r10
jle Npos31
iaddq $1, %rax

Npos31: iaddq $-1, %rdx iaddq $16, %rdi iaddq $16, %rsi andq %rdx,%rdx jg Loop31

##################################################################

Do not modify the following section of code

Function epilogue.

Done: ret ##################################################################

# $begin ncopy-ys ################################################################### ncopyys - Copy a src block of len words to dst# Return the number of positive words 0 contained in src## Include y

原文地址: https://www.cveoy.top/t/topic/bUEj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录