1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27/* 28 * Copyright (c) 2008, Intel Corporation 29 * All rights reserved. 30 */ 31 32 .file "memset.s" 33 34#include <sys/asm_linkage.h> 35 36 ANSI_PRAGMA_WEAK(memset,function) 37 38#include "cache.h" 39#include "proc64_id.h" 40 41#define L(s) .memset/**/s 42 43/* 44 * memset algorithm overview: 45 * 46 * Thresholds used below were determined experimentally. 47 * 48 * Pseudo code: 49 * 50 * If (size <= 144 bytes) { 51 * do unrolled code (primarily 8-byte stores) regardless of alignment. 52 * } else { 53 * Align destination to 16-byte boundary 54 * 55 * if (NO_SSE) { 56 * If (size > largest level cache) { 57 * Use 8-byte non-temporal stores (64-bytes/loop) 58 * } else { 59 * if (size >= 2K) { 60 * Use rep sstoq 61 * } else { 62 * Use 8-byte stores (128 bytes per loop) 63 * } 64 * } 65 * 66 * } else { **USE SSE** 67 * If (size <= 192 bytes) { 68 * do unrolled code using primarily 16-byte stores (SSE2) 69 * } else { 70 * If (size > largest level cache) { 71 * Use 16-byte non-temporal stores (128-bytes/loop) 72 * } else { 73 * Use 16-byte stores (128 bytes per loop) 74 * } 75 * } 76 * } 77 * 78 * Finish any remaining bytes via unrolled code above. 79 * } 80 */ 81 82 ENTRY(memset) # (void *, const void*, size_t) 83 cmp $0x1,%rdx 84 mov %rdi,%rax # memset returns the dest address 85 jne L(ck2) 86 mov %sil,(%rdi) 87 ret 88L(ck2): 89 mov $0x0101010101010101,%r9 90 mov %rdx,%r8 91 movzbq %sil,%rdx 92 imul %r9,%rdx # clone value 8 times 93 94 cmp $0x90,%r8 # 144 95 jge L(ck_align) 96 97 lea L(setPxQx)(%rip),%r11 98 add %r8,%rdi 99 100 movslq (%r11,%r8,4),%rcx 101 lea (%rcx,%r11,1),%r11 102 jmpq *%r11 103 104 .balign 16 105L(setPxQx): .int L(P0Q0)-L(setPxQx) 106 .int L(P1Q0)-L(setPxQx) 107 .int L(P2Q0)-L(setPxQx) 108 .int L(P3Q0)-L(setPxQx) 109 .int L(P4Q0)-L(setPxQx) 110 .int L(P5Q0)-L(setPxQx) 111 .int L(P6Q0)-L(setPxQx) 112 .int L(P7Q0)-L(setPxQx) 113 114 .int L(P0Q1)-L(setPxQx) 115 .int L(P1Q1)-L(setPxQx) 116 .int L(P2Q1)-L(setPxQx) 117 .int L(P3Q1)-L(setPxQx) 118 .int L(P4Q1)-L(setPxQx) 119 .int L(P5Q1)-L(setPxQx) 120 .int L(P6Q1)-L(setPxQx) 121 .int L(P7Q1)-L(setPxQx) 122 123 .int L(P0Q2)-L(setPxQx) 124 .int L(P1Q2)-L(setPxQx) 125 .int L(P2Q2)-L(setPxQx) 126 .int L(P3Q2)-L(setPxQx) 127 .int L(P4Q2)-L(setPxQx) 128 .int L(P5Q2)-L(setPxQx) 129 .int L(P6Q2)-L(setPxQx) 130 .int L(P7Q2)-L(setPxQx) 131 132 .int L(P0Q3)-L(setPxQx) 133 .int L(P1Q3)-L(setPxQx) 134 .int L(P2Q3)-L(setPxQx) 135 .int L(P3Q3)-L(setPxQx) 136 .int L(P4Q3)-L(setPxQx) 137 .int L(P5Q3)-L(setPxQx) 138 .int L(P6Q3)-L(setPxQx) 139 .int L(P7Q3)-L(setPxQx) 140 141 .int L(P0Q4)-L(setPxQx) 142 .int L(P1Q4)-L(setPxQx) 143 .int L(P2Q4)-L(setPxQx) 144 .int L(P3Q4)-L(setPxQx) 145 .int L(P4Q4)-L(setPxQx) 146 .int L(P5Q4)-L(setPxQx) 147 .int L(P6Q4)-L(setPxQx) 148 .int L(P7Q4)-L(setPxQx) 149 150 .int L(P0Q5)-L(setPxQx) 151 .int L(P1Q5)-L(setPxQx) 152 .int L(P2Q5)-L(setPxQx) 153 .int L(P3Q5)-L(setPxQx) 154 .int L(P4Q5)-L(setPxQx) 155 .int L(P5Q5)-L(setPxQx) 156 .int L(P6Q5)-L(setPxQx) 157 .int L(P7Q5)-L(setPxQx) 158 159 .int L(P0Q6)-L(setPxQx) 160 .int L(P1Q6)-L(setPxQx) 161 .int L(P2Q6)-L(setPxQx) 162 .int L(P3Q6)-L(setPxQx) 163 .int L(P4Q6)-L(setPxQx) 164 .int L(P5Q6)-L(setPxQx) 165 .int L(P6Q6)-L(setPxQx) 166 .int L(P7Q6)-L(setPxQx) 167 168 .int L(P0Q7)-L(setPxQx) 169 .int L(P1Q7)-L(setPxQx) 170 .int L(P2Q7)-L(setPxQx) 171 .int L(P3Q7)-L(setPxQx) 172 .int L(P4Q7)-L(setPxQx) 173 .int L(P5Q7)-L(setPxQx) 174 .int L(P6Q7)-L(setPxQx) 175 .int L(P7Q7)-L(setPxQx) 176 177 .int L(P0Q8)-L(setPxQx) 178 .int L(P1Q8)-L(setPxQx) 179 .int L(P2Q8)-L(setPxQx) 180 .int L(P3Q8)-L(setPxQx) 181 .int L(P4Q8)-L(setPxQx) 182 .int L(P5Q8)-L(setPxQx) 183 .int L(P6Q8)-L(setPxQx) 184 .int L(P7Q8)-L(setPxQx) 185 186 .int L(P0Q9)-L(setPxQx) 187 .int L(P1Q9)-L(setPxQx) 188 .int L(P2Q9)-L(setPxQx) 189 .int L(P3Q9)-L(setPxQx) 190 .int L(P4Q9)-L(setPxQx) 191 .int L(P5Q9)-L(setPxQx) 192 .int L(P6Q9)-L(setPxQx) 193 .int L(P7Q9)-L(setPxQx) 194 195 .int L(P0QA)-L(setPxQx) 196 .int L(P1QA)-L(setPxQx) 197 .int L(P2QA)-L(setPxQx) 198 .int L(P3QA)-L(setPxQx) 199 .int L(P4QA)-L(setPxQx) 200 .int L(P5QA)-L(setPxQx) 201 .int L(P6QA)-L(setPxQx) 202 .int L(P7QA)-L(setPxQx) 203 204 .int L(P0QB)-L(setPxQx) 205 .int L(P1QB)-L(setPxQx) 206 .int L(P2QB)-L(setPxQx) 207 .int L(P3QB)-L(setPxQx) 208 .int L(P4QB)-L(setPxQx) 209 .int L(P5QB)-L(setPxQx) 210 .int L(P6QB)-L(setPxQx) 211 .int L(P7QB)-L(setPxQx) 212 213 .int L(P0QC)-L(setPxQx) 214 .int L(P1QC)-L(setPxQx) 215 .int L(P2QC)-L(setPxQx) 216 .int L(P3QC)-L(setPxQx) 217 .int L(P4QC)-L(setPxQx) 218 .int L(P5QC)-L(setPxQx) 219 .int L(P6QC)-L(setPxQx) 220 .int L(P7QC)-L(setPxQx) 221 222 .int L(P0QD)-L(setPxQx) 223 .int L(P1QD)-L(setPxQx) 224 .int L(P2QD)-L(setPxQx) 225 .int L(P3QD)-L(setPxQx) 226 .int L(P4QD)-L(setPxQx) 227 .int L(P5QD)-L(setPxQx) 228 .int L(P6QD)-L(setPxQx) 229 .int L(P7QD)-L(setPxQx) 230 231 .int L(P0QE)-L(setPxQx) # 112 232 .int L(P1QE)-L(setPxQx) 233 .int L(P2QE)-L(setPxQx) 234 .int L(P3QE)-L(setPxQx) 235 .int L(P4QE)-L(setPxQx) 236 .int L(P5QE)-L(setPxQx) 237 .int L(P6QE)-L(setPxQx) 238 .int L(P7QE)-L(setPxQx) 239 240 .int L(P0QF)-L(setPxQx) #120 241 .int L(P1QF)-L(setPxQx) 242 .int L(P2QF)-L(setPxQx) 243 .int L(P3QF)-L(setPxQx) 244 .int L(P4QF)-L(setPxQx) 245 .int L(P5QF)-L(setPxQx) 246 .int L(P6QF)-L(setPxQx) 247 .int L(P7QF)-L(setPxQx) 248 249 .int L(P0QG)-L(setPxQx) #128 250 .int L(P1QG)-L(setPxQx) 251 .int L(P2QG)-L(setPxQx) 252 .int L(P3QG)-L(setPxQx) 253 .int L(P4QG)-L(setPxQx) 254 .int L(P5QG)-L(setPxQx) 255 .int L(P6QG)-L(setPxQx) 256 .int L(P7QG)-L(setPxQx) 257 258 .int L(P0QH)-L(setPxQx) #136 259 .int L(P1QH)-L(setPxQx) 260 .int L(P2QH)-L(setPxQx) 261 .int L(P3QH)-L(setPxQx) 262 .int L(P4QH)-L(setPxQx) 263 .int L(P5QH)-L(setPxQx) 264 .int L(P6QH)-L(setPxQx) 265 .int L(P7QH)-L(setPxQx) #143 266 267 .balign 16 268L(P1QH): mov %rdx,-0x89(%rdi) 269L(P1QG): mov %rdx,-0x81(%rdi) 270 .balign 16 271L(P1QF): mov %rdx,-0x79(%rdi) 272L(P1QE): mov %rdx,-0x71(%rdi) 273L(P1QD): mov %rdx,-0x69(%rdi) 274L(P1QC): mov %rdx,-0x61(%rdi) 275L(P1QB): mov %rdx,-0x59(%rdi) 276L(P1QA): mov %rdx,-0x51(%rdi) 277L(P1Q9): mov %rdx,-0x49(%rdi) 278L(P1Q8): mov %rdx,-0x41(%rdi) 279L(P1Q7): mov %rdx,-0x39(%rdi) 280L(P1Q6): mov %rdx,-0x31(%rdi) 281L(P1Q5): mov %rdx,-0x29(%rdi) 282L(P1Q4): mov %rdx,-0x21(%rdi) 283L(P1Q3): mov %rdx,-0x19(%rdi) 284L(P1Q2): mov %rdx,-0x11(%rdi) 285L(P1Q1): mov %rdx,-0x9(%rdi) 286L(P1Q0): mov %dl,-0x1(%rdi) 287 ret 288 289 .balign 16 290L(P0QH): mov %rdx,-0x88(%rdi) 291 .balign 16 292L(P0QG): mov %rdx,-0x80(%rdi) 293L(P0QF): mov %rdx,-0x78(%rdi) 294L(P0QE): mov %rdx,-0x70(%rdi) 295L(P0QD): mov %rdx,-0x68(%rdi) 296L(P0QC): mov %rdx,-0x60(%rdi) 297L(P0QB): mov %rdx,-0x58(%rdi) 298L(P0QA): mov %rdx,-0x50(%rdi) 299L(P0Q9): mov %rdx,-0x48(%rdi) 300L(P0Q8): mov %rdx,-0x40(%rdi) 301L(P0Q7): mov %rdx,-0x38(%rdi) 302L(P0Q6): mov %rdx,-0x30(%rdi) 303L(P0Q5): mov %rdx,-0x28(%rdi) 304L(P0Q4): mov %rdx,-0x20(%rdi) 305L(P0Q3): mov %rdx,-0x18(%rdi) 306L(P0Q2): mov %rdx,-0x10(%rdi) 307L(P0Q1): mov %rdx,-0x8(%rdi) 308L(P0Q0): ret 309 310 .balign 16 311L(P2QH): mov %rdx,-0x8a(%rdi) 312L(P2QG): mov %rdx,-0x82(%rdi) 313 .balign 16 314L(P2QF): mov %rdx,-0x7a(%rdi) 315L(P2QE): mov %rdx,-0x72(%rdi) 316L(P2QD): mov %rdx,-0x6a(%rdi) 317L(P2QC): mov %rdx,-0x62(%rdi) 318L(P2QB): mov %rdx,-0x5a(%rdi) 319L(P2QA): mov %rdx,-0x52(%rdi) 320L(P2Q9): mov %rdx,-0x4a(%rdi) 321L(P2Q8): mov %rdx,-0x42(%rdi) 322L(P2Q7): mov %rdx,-0x3a(%rdi) 323L(P2Q6): mov %rdx,-0x32(%rdi) 324L(P2Q5): mov %rdx,-0x2a(%rdi) 325L(P2Q4): mov %rdx,-0x22(%rdi) 326L(P2Q3): mov %rdx,-0x1a(%rdi) 327L(P2Q2): mov %rdx,-0x12(%rdi) 328L(P2Q1): mov %rdx,-0xa(%rdi) 329L(P2Q0): mov %dx,-0x2(%rdi) 330 ret 331 332 .balign 16 333L(P3QH): mov %rdx,-0x8b(%rdi) 334L(P3QG): mov %rdx,-0x83(%rdi) 335 .balign 16 336L(P3QF): mov %rdx,-0x7b(%rdi) 337L(P3QE): mov %rdx,-0x73(%rdi) 338L(P3QD): mov %rdx,-0x6b(%rdi) 339L(P3QC): mov %rdx,-0x63(%rdi) 340L(P3QB): mov %rdx,-0x5b(%rdi) 341L(P3QA): mov %rdx,-0x53(%rdi) 342L(P3Q9): mov %rdx,-0x4b(%rdi) 343L(P3Q8): mov %rdx,-0x43(%rdi) 344L(P3Q7): mov %rdx,-0x3b(%rdi) 345L(P3Q6): mov %rdx,-0x33(%rdi) 346L(P3Q5): mov %rdx,-0x2b(%rdi) 347L(P3Q4): mov %rdx,-0x23(%rdi) 348L(P3Q3): mov %rdx,-0x1b(%rdi) 349L(P3Q2): mov %rdx,-0x13(%rdi) 350L(P3Q1): mov %rdx,-0xb(%rdi) 351L(P3Q0): mov %dx,-0x3(%rdi) 352 mov %dl,-0x1(%rdi) 353 ret 354 355 .balign 16 356L(P4QH): mov %rdx,-0x8c(%rdi) 357L(P4QG): mov %rdx,-0x84(%rdi) 358 .balign 16 359L(P4QF): mov %rdx,-0x7c(%rdi) 360L(P4QE): mov %rdx,-0x74(%rdi) 361L(P4QD): mov %rdx,-0x6c(%rdi) 362L(P4QC): mov %rdx,-0x64(%rdi) 363L(P4QB): mov %rdx,-0x5c(%rdi) 364L(P4QA): mov %rdx,-0x54(%rdi) 365L(P4Q9): mov %rdx,-0x4c(%rdi) 366L(P4Q8): mov %rdx,-0x44(%rdi) 367L(P4Q7): mov %rdx,-0x3c(%rdi) 368L(P4Q6): mov %rdx,-0x34(%rdi) 369L(P4Q5): mov %rdx,-0x2c(%rdi) 370L(P4Q4): mov %rdx,-0x24(%rdi) 371L(P4Q3): mov %rdx,-0x1c(%rdi) 372L(P4Q2): mov %rdx,-0x14(%rdi) 373L(P4Q1): mov %rdx,-0xc(%rdi) 374L(P4Q0): mov %edx,-0x4(%rdi) 375 ret 376 377 .balign 16 378L(P5QH): mov %rdx,-0x8d(%rdi) 379L(P5QG): mov %rdx,-0x85(%rdi) 380 .balign 16 381L(P5QF): mov %rdx,-0x7d(%rdi) 382L(P5QE): mov %rdx,-0x75(%rdi) 383L(P5QD): mov %rdx,-0x6d(%rdi) 384L(P5QC): mov %rdx,-0x65(%rdi) 385L(P5QB): mov %rdx,-0x5d(%rdi) 386L(P5QA): mov %rdx,-0x55(%rdi) 387L(P5Q9): mov %rdx,-0x4d(%rdi) 388L(P5Q8): mov %rdx,-0x45(%rdi) 389L(P5Q7): mov %rdx,-0x3d(%rdi) 390L(P5Q6): mov %rdx,-0x35(%rdi) 391L(P5Q5): mov %rdx,-0x2d(%rdi) 392L(P5Q4): mov %rdx,-0x25(%rdi) 393L(P5Q3): mov %rdx,-0x1d(%rdi) 394L(P5Q2): mov %rdx,-0x15(%rdi) 395L(P5Q1): mov %rdx,-0xd(%rdi) 396L(P5Q0): mov %edx,-0x5(%rdi) 397 mov %dl,-0x1(%rdi) 398 ret 399 400 .balign 16 401L(P6QH): mov %rdx,-0x8e(%rdi) 402L(P6QG): mov %rdx,-0x86(%rdi) 403 .balign 16 404L(P6QF): mov %rdx,-0x7e(%rdi) 405L(P6QE): mov %rdx,-0x76(%rdi) 406L(P6QD): mov %rdx,-0x6e(%rdi) 407L(P6QC): mov %rdx,-0x66(%rdi) 408L(P6QB): mov %rdx,-0x5e(%rdi) 409L(P6QA): mov %rdx,-0x56(%rdi) 410L(P6Q9): mov %rdx,-0x4e(%rdi) 411L(P6Q8): mov %rdx,-0x46(%rdi) 412L(P6Q7): mov %rdx,-0x3e(%rdi) 413L(P6Q6): mov %rdx,-0x36(%rdi) 414L(P6Q5): mov %rdx,-0x2e(%rdi) 415L(P6Q4): mov %rdx,-0x26(%rdi) 416L(P6Q3): mov %rdx,-0x1e(%rdi) 417L(P6Q2): mov %rdx,-0x16(%rdi) 418L(P6Q1): mov %rdx,-0xe(%rdi) 419L(P6Q0): mov %edx,-0x6(%rdi) 420 mov %dx,-0x2(%rdi) 421 ret 422 423 .balign 16 424L(P7QH): mov %rdx,-0x8f(%rdi) 425L(P7QG): mov %rdx,-0x87(%rdi) 426 .balign 16 427L(P7QF): mov %rdx,-0x7f(%rdi) 428L(P7QE): mov %rdx,-0x77(%rdi) 429L(P7QD): mov %rdx,-0x6f(%rdi) 430L(P7QC): mov %rdx,-0x67(%rdi) 431L(P7QB): mov %rdx,-0x5f(%rdi) 432L(P7QA): mov %rdx,-0x57(%rdi) 433L(P7Q9): mov %rdx,-0x4f(%rdi) 434L(P7Q8): mov %rdx,-0x47(%rdi) 435L(P7Q7): mov %rdx,-0x3f(%rdi) 436L(P7Q6): mov %rdx,-0x37(%rdi) 437L(P7Q5): mov %rdx,-0x2f(%rdi) 438L(P7Q4): mov %rdx,-0x27(%rdi) 439L(P7Q3): mov %rdx,-0x1f(%rdi) 440L(P7Q2): mov %rdx,-0x17(%rdi) 441L(P7Q1): mov %rdx,-0xf(%rdi) 442L(P7Q0): mov %edx,-0x7(%rdi) 443 mov %dx,-0x3(%rdi) 444 mov %dl,-0x1(%rdi) 445 ret 446 447 .balign 16 448L(ck_align): 449 /* 450 * Align to 16 byte boundary first 451 */ 452 lea L(AliPxQx)(%rip),%r11 453 mov $0x10,%r10 454 mov %rdi,%r9 455 and $0xf,%r9 456 sub %r9,%r10 457 and $0xf,%r10 458 add %r10,%rdi 459 sub %r10,%r8 460 461 movslq (%r11,%r10,4),%rcx 462 lea (%rcx,%r11,1),%r11 463 jmpq *%r11 # align dest to 16-byte boundary 464 465 .balign 16 466L(AliPxQx): .int L(aligned_now)-L(AliPxQx) 467 .int L(A1Q0)-L(AliPxQx) 468 .int L(A2Q0)-L(AliPxQx) 469 .int L(A3Q0)-L(AliPxQx) 470 .int L(A4Q0)-L(AliPxQx) 471 .int L(A5Q0)-L(AliPxQx) 472 .int L(A6Q0)-L(AliPxQx) 473 .int L(A7Q0)-L(AliPxQx) 474 475 .int L(A0Q1)-L(AliPxQx) 476 .int L(A1Q1)-L(AliPxQx) 477 .int L(A2Q1)-L(AliPxQx) 478 .int L(A3Q1)-L(AliPxQx) 479 .int L(A4Q1)-L(AliPxQx) 480 .int L(A5Q1)-L(AliPxQx) 481 .int L(A6Q1)-L(AliPxQx) 482 .int L(A7Q1)-L(AliPxQx) 483 484 .balign 16 485L(A5Q1): mov %dl,-0xd(%rdi) 486L(A4Q1): mov %edx,-0xc(%rdi) 487L(A0Q1): mov %rdx,-0x8(%rdi) 488 jmp L(aligned_now) 489 490 .balign 16 491L(A1Q1): mov %dl,-0x9(%rdi) 492 mov %rdx,-0x8(%rdi) 493 jmp L(aligned_now) 494 495 .balign 16 496L(A1Q0): mov %dl,-0x1(%rdi) 497 jmp L(aligned_now) 498 499 .balign 16 500L(A3Q1): mov %dl,-0xb(%rdi) 501L(A2Q1): mov %dx,-0xa(%rdi) 502 mov %rdx,-0x8(%rdi) 503 jmp L(aligned_now) 504 505 .balign 16 506L(A3Q0): mov %dl,-0x3(%rdi) 507L(A2Q0): mov %dx,-0x2(%rdi) 508 jmp L(aligned_now) 509 510 .balign 16 511L(A5Q0): mov %dl,-0x5(%rdi) 512L(A4Q0): mov %edx,-0x4(%rdi) 513 jmp L(aligned_now) 514 515 .balign 16 516L(A7Q1): mov %dl,-0xf(%rdi) 517L(A6Q1): mov %dx,-0xe(%rdi) 518 mov %edx,-0xc(%rdi) 519 mov %rdx,-0x8(%rdi) 520 jmp L(aligned_now) 521 522 .balign 16 523L(A7Q0): mov %dl,-0x7(%rdi) 524L(A6Q0): mov %dx,-0x6(%rdi) 525 mov %edx,-0x4(%rdi) 526 #jmp L(aligned_now) # Fall thru... 527 528 .balign 16 529L(aligned_now): 530 /* 531 * Check memops method 532 */ 533 cmpl $NO_SSE,.memops_method(%rip) 534 je L(Loop8byte_pre) 535 536 /* 537 * Use SSE2 instructions 538 */ 539 movd %rdx,%xmm0 540 lea L(SSExDx)(%rip),%r9 # after dest alignment 541 punpcklqdq %xmm0,%xmm0 # fill RegXMM0 with the pattern 542 cmp $0xc0,%r8 # 192 543 jge L(byte32sse2_pre) 544 545 add %r8,%rdi 546 547 movslq (%r9,%r8,4),%rcx 548 lea (%rcx,%r9,1),%r9 549 jmpq *%r9 550 551 .balign 16 552L(SSE0QB): movdqa %xmm0,-0xb0(%rdi) 553L(SSE0QA): movdqa %xmm0,-0xa0(%rdi) 554L(SSE0Q9): movdqa %xmm0,-0x90(%rdi) 555L(SSE0Q8): movdqa %xmm0,-0x80(%rdi) 556L(SSE0Q7): movdqa %xmm0,-0x70(%rdi) 557L(SSE0Q6): movdqa %xmm0,-0x60(%rdi) 558L(SSE0Q5): movdqa %xmm0,-0x50(%rdi) 559L(SSE0Q4): movdqa %xmm0,-0x40(%rdi) 560L(SSE0Q3): movdqa %xmm0,-0x30(%rdi) 561L(SSE0Q2): movdqa %xmm0,-0x20(%rdi) 562L(SSE0Q1): movdqa %xmm0,-0x10(%rdi) 563L(SSE0Q0): ret 564 565 .balign 16 566L(SSE1QB): movdqa %xmm0,-0xb1(%rdi) 567L(SSE1QA): movdqa %xmm0,-0xa1(%rdi) 568L(SSE1Q9): movdqa %xmm0,-0x91(%rdi) 569L(SSE1Q8): movdqa %xmm0,-0x81(%rdi) 570L(SSE1Q7): movdqa %xmm0,-0x71(%rdi) 571L(SSE1Q6): movdqa %xmm0,-0x61(%rdi) 572L(SSE1Q5): movdqa %xmm0,-0x51(%rdi) 573L(SSE1Q4): movdqa %xmm0,-0x41(%rdi) 574L(SSE1Q3): movdqa %xmm0,-0x31(%rdi) 575L(SSE1Q2): movdqa %xmm0,-0x21(%rdi) 576L(SSE1Q1): movdqa %xmm0,-0x11(%rdi) 577L(SSE1Q0): mov %dl,-0x1(%rdi) 578 ret 579 580 .balign 16 581L(SSE2QB): movdqa %xmm0,-0xb2(%rdi) 582L(SSE2QA): movdqa %xmm0,-0xa2(%rdi) 583L(SSE2Q9): movdqa %xmm0,-0x92(%rdi) 584L(SSE2Q8): movdqa %xmm0,-0x82(%rdi) 585L(SSE2Q7): movdqa %xmm0,-0x72(%rdi) 586L(SSE2Q6): movdqa %xmm0,-0x62(%rdi) 587L(SSE2Q5): movdqa %xmm0,-0x52(%rdi) 588L(SSE2Q4): movdqa %xmm0,-0x42(%rdi) 589L(SSE2Q3): movdqa %xmm0,-0x32(%rdi) 590L(SSE2Q2): movdqa %xmm0,-0x22(%rdi) 591L(SSE2Q1): movdqa %xmm0,-0x12(%rdi) 592L(SSE2Q0): mov %dx,-0x2(%rdi) 593 ret 594 595 .balign 16 596L(SSE3QB): movdqa %xmm0,-0xb3(%rdi) 597L(SSE3QA): movdqa %xmm0,-0xa3(%rdi) 598L(SSE3Q9): movdqa %xmm0,-0x93(%rdi) 599L(SSE3Q8): movdqa %xmm0,-0x83(%rdi) 600L(SSE3Q7): movdqa %xmm0,-0x73(%rdi) 601L(SSE3Q6): movdqa %xmm0,-0x63(%rdi) 602L(SSE3Q5): movdqa %xmm0,-0x53(%rdi) 603L(SSE3Q4): movdqa %xmm0,-0x43(%rdi) 604L(SSE3Q3): movdqa %xmm0,-0x33(%rdi) 605L(SSE3Q2): movdqa %xmm0,-0x23(%rdi) 606L(SSE3Q1): movdqa %xmm0,-0x13(%rdi) 607L(SSE3Q0): mov %dx,-0x3(%rdi) 608 mov %dl,-0x1(%rdi) 609 ret 610 611 .balign 16 612L(SSE4QB): movdqa %xmm0,-0xb4(%rdi) 613L(SSE4QA): movdqa %xmm0,-0xa4(%rdi) 614L(SSE4Q9): movdqa %xmm0,-0x94(%rdi) 615L(SSE4Q8): movdqa %xmm0,-0x84(%rdi) 616L(SSE4Q7): movdqa %xmm0,-0x74(%rdi) 617L(SSE4Q6): movdqa %xmm0,-0x64(%rdi) 618L(SSE4Q5): movdqa %xmm0,-0x54(%rdi) 619L(SSE4Q4): movdqa %xmm0,-0x44(%rdi) 620L(SSE4Q3): movdqa %xmm0,-0x34(%rdi) 621L(SSE4Q2): movdqa %xmm0,-0x24(%rdi) 622L(SSE4Q1): movdqa %xmm0,-0x14(%rdi) 623L(SSE4Q0): mov %edx,-0x4(%rdi) 624 ret 625 626 .balign 16 627L(SSE5QB): movdqa %xmm0,-0xb5(%rdi) 628L(SSE5QA): movdqa %xmm0,-0xa5(%rdi) 629L(SSE5Q9): movdqa %xmm0,-0x95(%rdi) 630L(SSE5Q8): movdqa %xmm0,-0x85(%rdi) 631L(SSE5Q7): movdqa %xmm0,-0x75(%rdi) 632L(SSE5Q6): movdqa %xmm0,-0x65(%rdi) 633L(SSE5Q5): movdqa %xmm0,-0x55(%rdi) 634L(SSE5Q4): movdqa %xmm0,-0x45(%rdi) 635L(SSE5Q3): movdqa %xmm0,-0x35(%rdi) 636L(SSE5Q2): movdqa %xmm0,-0x25(%rdi) 637L(SSE5Q1): movdqa %xmm0,-0x15(%rdi) 638L(SSE5Q0): mov %edx,-0x5(%rdi) 639 mov %dl,-0x1(%rdi) 640 ret 641 642 .balign 16 643L(SSE6QB): movdqa %xmm0,-0xb6(%rdi) 644L(SSE6QA): movdqa %xmm0,-0xa6(%rdi) 645L(SSE6Q9): movdqa %xmm0,-0x96(%rdi) 646L(SSE6Q8): movdqa %xmm0,-0x86(%rdi) 647L(SSE6Q7): movdqa %xmm0,-0x76(%rdi) 648L(SSE6Q6): movdqa %xmm0,-0x66(%rdi) 649L(SSE6Q5): movdqa %xmm0,-0x56(%rdi) 650L(SSE6Q4): movdqa %xmm0,-0x46(%rdi) 651L(SSE6Q3): movdqa %xmm0,-0x36(%rdi) 652L(SSE6Q2): movdqa %xmm0,-0x26(%rdi) 653L(SSE6Q1): movdqa %xmm0,-0x16(%rdi) 654L(SSE6Q0): mov %edx,-0x6(%rdi) 655 mov %dx,-0x2(%rdi) 656 ret 657 658 .balign 16 659L(SSE7QB): movdqa %xmm0,-0xb7(%rdi) 660L(SSE7QA): movdqa %xmm0,-0xa7(%rdi) 661L(SSE7Q9): movdqa %xmm0,-0x97(%rdi) 662L(SSE7Q8): movdqa %xmm0,-0x87(%rdi) 663L(SSE7Q7): movdqa %xmm0,-0x77(%rdi) 664L(SSE7Q6): movdqa %xmm0,-0x67(%rdi) 665L(SSE7Q5): movdqa %xmm0,-0x57(%rdi) 666L(SSE7Q4): movdqa %xmm0,-0x47(%rdi) 667L(SSE7Q3): movdqa %xmm0,-0x37(%rdi) 668L(SSE7Q2): movdqa %xmm0,-0x27(%rdi) 669L(SSE7Q1): movdqa %xmm0,-0x17(%rdi) 670L(SSE7Q0): mov %edx,-0x7(%rdi) 671 mov %dx,-0x3(%rdi) 672 mov %dl,-0x1(%rdi) 673 ret 674 675 .balign 16 676L(SSE8QB): movdqa %xmm0,-0xb8(%rdi) 677L(SSE8QA): movdqa %xmm0,-0xa8(%rdi) 678L(SSE8Q9): movdqa %xmm0,-0x98(%rdi) 679L(SSE8Q8): movdqa %xmm0,-0x88(%rdi) 680L(SSE8Q7): movdqa %xmm0,-0x78(%rdi) 681L(SSE8Q6): movdqa %xmm0,-0x68(%rdi) 682L(SSE8Q5): movdqa %xmm0,-0x58(%rdi) 683L(SSE8Q4): movdqa %xmm0,-0x48(%rdi) 684L(SSE8Q3): movdqa %xmm0,-0x38(%rdi) 685L(SSE8Q2): movdqa %xmm0,-0x28(%rdi) 686L(SSE8Q1): movdqa %xmm0,-0x18(%rdi) 687L(SSE8Q0): mov %rdx,-0x8(%rdi) 688 ret 689 690 .balign 16 691L(SSE9QB): movdqa %xmm0,-0xb9(%rdi) 692L(SSE9QA): movdqa %xmm0,-0xa9(%rdi) 693L(SSE9Q9): movdqa %xmm0,-0x99(%rdi) 694L(SSE9Q8): movdqa %xmm0,-0x89(%rdi) 695L(SSE9Q7): movdqa %xmm0,-0x79(%rdi) 696L(SSE9Q6): movdqa %xmm0,-0x69(%rdi) 697L(SSE9Q5): movdqa %xmm0,-0x59(%rdi) 698L(SSE9Q4): movdqa %xmm0,-0x49(%rdi) 699L(SSE9Q3): movdqa %xmm0,-0x39(%rdi) 700L(SSE9Q2): movdqa %xmm0,-0x29(%rdi) 701L(SSE9Q1): movdqa %xmm0,-0x19(%rdi) 702L(SSE9Q0): mov %rdx,-0x9(%rdi) 703 mov %dl,-0x1(%rdi) 704 ret 705 706 .balign 16 707L(SSE10QB): movdqa %xmm0,-0xba(%rdi) 708L(SSE10QA): movdqa %xmm0,-0xaa(%rdi) 709L(SSE10Q9): movdqa %xmm0,-0x9a(%rdi) 710L(SSE10Q8): movdqa %xmm0,-0x8a(%rdi) 711L(SSE10Q7): movdqa %xmm0,-0x7a(%rdi) 712L(SSE10Q6): movdqa %xmm0,-0x6a(%rdi) 713L(SSE10Q5): movdqa %xmm0,-0x5a(%rdi) 714L(SSE10Q4): movdqa %xmm0,-0x4a(%rdi) 715L(SSE10Q3): movdqa %xmm0,-0x3a(%rdi) 716L(SSE10Q2): movdqa %xmm0,-0x2a(%rdi) 717L(SSE10Q1): movdqa %xmm0,-0x1a(%rdi) 718L(SSE10Q0): mov %rdx,-0xa(%rdi) 719 mov %dx,-0x2(%rdi) 720 ret 721 722 .balign 16 723L(SSE11QB): movdqa %xmm0,-0xbb(%rdi) 724L(SSE11QA): movdqa %xmm0,-0xab(%rdi) 725L(SSE11Q9): movdqa %xmm0,-0x9b(%rdi) 726L(SSE11Q8): movdqa %xmm0,-0x8b(%rdi) 727L(SSE11Q7): movdqa %xmm0,-0x7b(%rdi) 728L(SSE11Q6): movdqa %xmm0,-0x6b(%rdi) 729L(SSE11Q5): movdqa %xmm0,-0x5b(%rdi) 730L(SSE11Q4): movdqa %xmm0,-0x4b(%rdi) 731L(SSE11Q3): movdqa %xmm0,-0x3b(%rdi) 732L(SSE11Q2): movdqa %xmm0,-0x2b(%rdi) 733L(SSE11Q1): movdqa %xmm0,-0x1b(%rdi) 734L(SSE11Q0): mov %rdx,-0xb(%rdi) 735 mov %dx,-0x3(%rdi) 736 mov %dl,-0x1(%rdi) 737 ret 738 739 .balign 16 740L(SSE12QB): movdqa %xmm0,-0xbc(%rdi) 741L(SSE12QA): movdqa %xmm0,-0xac(%rdi) 742L(SSE12Q9): movdqa %xmm0,-0x9c(%rdi) 743L(SSE12Q8): movdqa %xmm0,-0x8c(%rdi) 744L(SSE12Q7): movdqa %xmm0,-0x7c(%rdi) 745L(SSE12Q6): movdqa %xmm0,-0x6c(%rdi) 746L(SSE12Q5): movdqa %xmm0,-0x5c(%rdi) 747L(SSE12Q4): movdqa %xmm0,-0x4c(%rdi) 748L(SSE12Q3): movdqa %xmm0,-0x3c(%rdi) 749L(SSE12Q2): movdqa %xmm0,-0x2c(%rdi) 750L(SSE12Q1): movdqa %xmm0,-0x1c(%rdi) 751L(SSE12Q0): mov %rdx,-0xc(%rdi) 752 mov %edx,-0x4(%rdi) 753 ret 754 755 .balign 16 756L(SSE13QB): movdqa %xmm0,-0xbd(%rdi) 757L(SSE13QA): movdqa %xmm0,-0xad(%rdi) 758L(SSE13Q9): movdqa %xmm0,-0x9d(%rdi) 759L(SSE13Q8): movdqa %xmm0,-0x8d(%rdi) 760L(SSE13Q7): movdqa %xmm0,-0x7d(%rdi) 761L(SSE13Q6): movdqa %xmm0,-0x6d(%rdi) 762L(SSE13Q5): movdqa %xmm0,-0x5d(%rdi) 763L(SSE13Q4): movdqa %xmm0,-0x4d(%rdi) 764L(SSE13Q3): movdqa %xmm0,-0x3d(%rdi) 765L(SSE13Q2): movdqa %xmm0,-0x2d(%rdi) 766L(SSE13Q1): movdqa %xmm0,-0x1d(%rdi) 767L(SSE13Q0): mov %rdx,-0xd(%rdi) 768 mov %edx,-0x5(%rdi) 769 mov %dl,-0x1(%rdi) 770 ret 771 772 .balign 16 773L(SSE14QB): movdqa %xmm0,-0xbe(%rdi) 774L(SSE14QA): movdqa %xmm0,-0xae(%rdi) 775L(SSE14Q9): movdqa %xmm0,-0x9e(%rdi) 776L(SSE14Q8): movdqa %xmm0,-0x8e(%rdi) 777L(SSE14Q7): movdqa %xmm0,-0x7e(%rdi) 778L(SSE14Q6): movdqa %xmm0,-0x6e(%rdi) 779L(SSE14Q5): movdqa %xmm0,-0x5e(%rdi) 780L(SSE14Q4): movdqa %xmm0,-0x4e(%rdi) 781L(SSE14Q3): movdqa %xmm0,-0x3e(%rdi) 782L(SSE14Q2): movdqa %xmm0,-0x2e(%rdi) 783L(SSE14Q1): movdqa %xmm0,-0x1e(%rdi) 784L(SSE14Q0): mov %rdx,-0xe(%rdi) 785 mov %edx,-0x6(%rdi) 786 mov %dx,-0x2(%rdi) 787 ret 788 789 .balign 16 790L(SSE15QB): movdqa %xmm0,-0xbf(%rdi) 791L(SSE15QA): movdqa %xmm0,-0xaf(%rdi) 792L(SSE15Q9): movdqa %xmm0,-0x9f(%rdi) 793L(SSE15Q8): movdqa %xmm0,-0x8f(%rdi) 794L(SSE15Q7): movdqa %xmm0,-0x7f(%rdi) 795L(SSE15Q6): movdqa %xmm0,-0x6f(%rdi) 796L(SSE15Q5): movdqa %xmm0,-0x5f(%rdi) 797L(SSE15Q4): movdqa %xmm0,-0x4f(%rdi) 798L(SSE15Q3): movdqa %xmm0,-0x3f(%rdi) 799L(SSE15Q2): movdqa %xmm0,-0x2f(%rdi) 800L(SSE15Q1): movdqa %xmm0,-0x1f(%rdi) 801L(SSE15Q0): mov %rdx,-0xf(%rdi) 802 mov %edx,-0x7(%rdi) 803 mov %dx,-0x3(%rdi) 804 mov %dl,-0x1(%rdi) 805 ret 806 807 .balign 16 808L(byte32sse2_pre): 809 mov .largest_level_cache_size(%rip),%r9d 810 cmp %r9,%r8 811 jg L(sse2_nt_move) 812 #jmp L(byte32sse2) # Fall thru... 813 814 .balign 16 815L(byte32sse2): 816 lea -0x80(%r8),%r8 # 128 817 cmp $0x80,%r8 818 movdqa %xmm0,(%rdi) 819 movdqa %xmm0,0x10(%rdi) 820 movdqa %xmm0,0x20(%rdi) 821 movdqa %xmm0,0x30(%rdi) 822 movdqa %xmm0,0x40(%rdi) 823 movdqa %xmm0,0x50(%rdi) 824 movdqa %xmm0,0x60(%rdi) 825 movdqa %xmm0,0x70(%rdi) 826 827 lea 0x80(%rdi),%rdi 828 jge L(byte32sse2) 829 830 lea L(SSExDx)(%rip),%r11 831 add %r8,%rdi 832 movslq (%r11,%r8,4),%rcx 833 lea (%rcx,%r11,1),%r11 834 jmpq *%r11 835 836 .balign 16 837L(sse2_nt_move): 838 sub $0x80,%r8 # 128 839 movntdq %xmm0,(%rdi) 840 movntdq %xmm0,0x10(%rdi) 841 movntdq %xmm0,0x20(%rdi) 842 movntdq %xmm0,0x30(%rdi) 843 movntdq %xmm0,0x40(%rdi) 844 movntdq %xmm0,0x50(%rdi) 845 movntdq %xmm0,0x60(%rdi) 846 movntdq %xmm0,0x70(%rdi) 847 add $0x80,%rdi 848 cmp $0x80,%r8 849 jge L(sse2_nt_move) 850 851 sfence 852 lea L(SSExDx)(%rip),%r11 853 add %r8,%rdi 854 movslq (%r11,%r8,4),%rcx 855 lea (%rcx,%r11,1),%r11 856 jmpq *%r11 857 858 /* 859 * Don't use SSE 860 */ 861 .balign 16 862L(Loop8byte_pre): 863 mov .largest_level_cache_size(%rip),%r9d 864 cmp %r9,%r8 865 jg L(Loop8byte_nt_move) 866 cmp $0x800,%r8 # Use rep sstoq 867 jge L(use_rep) 868 869 .balign 16 870L(Loop8byte): 871 lea -0x80(%r8),%r8 # 128 872 mov %rdx,(%rdi) 873 mov %rdx,0x8(%rdi) 874 mov %rdx,0x10(%rdi) 875 mov %rdx,0x18(%rdi) 876 mov %rdx,0x20(%rdi) 877 mov %rdx,0x28(%rdi) 878 mov %rdx,0x30(%rdi) 879 mov %rdx,0x38(%rdi) 880 cmp $0x80,%r8 881 mov %rdx,0x40(%rdi) 882 mov %rdx,0x48(%rdi) 883 mov %rdx,0x50(%rdi) 884 mov %rdx,0x58(%rdi) 885 mov %rdx,0x60(%rdi) 886 mov %rdx,0x68(%rdi) 887 mov %rdx,0x70(%rdi) 888 mov %rdx,0x78(%rdi) 889 lea 0x80(%rdi),%rdi 890 jge L(Loop8byte) 891 8921: 893 lea L(setPxQx)(%rip),%r11 894 lea (%rdi,%r8,1),%rdi 895 896 movslq (%r11,%r8,4),%rcx 897 lea (%rcx,%r11,1),%r11 898 jmpq *%r11 899 900 /* 901 * Use rep sstoq for sizes > 2K 902 */ 903 .balign 16 904L(use_rep): 905 movq %r8,%rcx # get size in bytes 906 xchg %rax,%rdx 907 shrq $3,%rcx 908 rep 909 sstoq 910 xchg %rax,%rdx 911 andq $7,%r8 # remaining bytes 912 jnz 1b 913 ret 914 915 .balign 16 916L(Loop8byte_nt_move): 917 lea -0x40(%r8),%r8 # 64 918 movnti %rdx,(%rdi) 919 movnti %rdx,0x8(%rdi) 920 movnti %rdx,0x10(%rdi) 921 movnti %rdx,0x18(%rdi) 922 cmp $0x40,%r8 923 movnti %rdx,0x20(%rdi) 924 movnti %rdx,0x28(%rdi) 925 movnti %rdx,0x30(%rdi) 926 movnti %rdx,0x38(%rdi) 927 lea 0x40(%rdi),%rdi 928 jge L(Loop8byte_nt_move) 929 930 sfence 931 lea L(setPxQx)(%rip),%r11 932 lea (%rdi,%r8,1),%rdi 933 934 movslq (%r11,%r8,4),%rcx 935 lea (%rcx,%r11,1),%r11 936 jmpq *%r11 937 938 .balign 16 939L(SSExDx): .int L(SSE0Q0) -L(SSExDx) 940 .int L(SSE1Q0) -L(SSExDx) 941 .int L(SSE2Q0) -L(SSExDx) 942 .int L(SSE3Q0) -L(SSExDx) 943 .int L(SSE4Q0) -L(SSExDx) 944 .int L(SSE5Q0) -L(SSExDx) 945 .int L(SSE6Q0) -L(SSExDx) 946 .int L(SSE7Q0) -L(SSExDx) 947 948 .int L(SSE8Q0) -L(SSExDx) 949 .int L(SSE9Q0) -L(SSExDx) 950 .int L(SSE10Q0)-L(SSExDx) 951 .int L(SSE11Q0)-L(SSExDx) 952 .int L(SSE12Q0)-L(SSExDx) 953 .int L(SSE13Q0)-L(SSExDx) 954 .int L(SSE14Q0)-L(SSExDx) 955 .int L(SSE15Q0)-L(SSExDx) 956 957 .int L(SSE0Q1) -L(SSExDx) 958 .int L(SSE1Q1) -L(SSExDx) 959 .int L(SSE2Q1) -L(SSExDx) 960 .int L(SSE3Q1) -L(SSExDx) 961 .int L(SSE4Q1) -L(SSExDx) 962 .int L(SSE5Q1) -L(SSExDx) 963 .int L(SSE6Q1) -L(SSExDx) 964 .int L(SSE7Q1) -L(SSExDx) 965 966 .int L(SSE8Q1) -L(SSExDx) 967 .int L(SSE9Q1) -L(SSExDx) 968 .int L(SSE10Q1)-L(SSExDx) 969 .int L(SSE11Q1)-L(SSExDx) 970 .int L(SSE12Q1)-L(SSExDx) 971 .int L(SSE13Q1)-L(SSExDx) 972 .int L(SSE14Q1)-L(SSExDx) 973 .int L(SSE15Q1)-L(SSExDx) 974 975 .int L(SSE0Q2) -L(SSExDx) 976 .int L(SSE1Q2) -L(SSExDx) 977 .int L(SSE2Q2) -L(SSExDx) 978 .int L(SSE3Q2) -L(SSExDx) 979 .int L(SSE4Q2) -L(SSExDx) 980 .int L(SSE5Q2) -L(SSExDx) 981 .int L(SSE6Q2) -L(SSExDx) 982 .int L(SSE7Q2) -L(SSExDx) 983 984 .int L(SSE8Q2) -L(SSExDx) 985 .int L(SSE9Q2) -L(SSExDx) 986 .int L(SSE10Q2)-L(SSExDx) 987 .int L(SSE11Q2)-L(SSExDx) 988 .int L(SSE12Q2)-L(SSExDx) 989 .int L(SSE13Q2)-L(SSExDx) 990 .int L(SSE14Q2)-L(SSExDx) 991 .int L(SSE15Q2)-L(SSExDx) 992 993 .int L(SSE0Q3) -L(SSExDx) 994 .int L(SSE1Q3) -L(SSExDx) 995 .int L(SSE2Q3) -L(SSExDx) 996 .int L(SSE3Q3) -L(SSExDx) 997 .int L(SSE4Q3) -L(SSExDx) 998 .int L(SSE5Q3) -L(SSExDx) 999 .int L(SSE6Q3) -L(SSExDx) 1000 .int L(SSE7Q3) -L(SSExDx) 1001 1002 .int L(SSE8Q3) -L(SSExDx) 1003 .int L(SSE9Q3) -L(SSExDx) 1004 .int L(SSE10Q3)-L(SSExDx) 1005 .int L(SSE11Q3)-L(SSExDx) 1006 .int L(SSE12Q3)-L(SSExDx) 1007 .int L(SSE13Q3)-L(SSExDx) 1008 .int L(SSE14Q3)-L(SSExDx) 1009 .int L(SSE15Q3)-L(SSExDx) 1010 1011 .int L(SSE0Q4) -L(SSExDx) 1012 .int L(SSE1Q4) -L(SSExDx) 1013 .int L(SSE2Q4) -L(SSExDx) 1014 .int L(SSE3Q4) -L(SSExDx) 1015 .int L(SSE4Q4) -L(SSExDx) 1016 .int L(SSE5Q4) -L(SSExDx) 1017 .int L(SSE6Q4) -L(SSExDx) 1018 .int L(SSE7Q4) -L(SSExDx) 1019 1020 .int L(SSE8Q4) -L(SSExDx) 1021 .int L(SSE9Q4) -L(SSExDx) 1022 .int L(SSE10Q4)-L(SSExDx) 1023 .int L(SSE11Q4)-L(SSExDx) 1024 .int L(SSE12Q4)-L(SSExDx) 1025 .int L(SSE13Q4)-L(SSExDx) 1026 .int L(SSE14Q4)-L(SSExDx) 1027 .int L(SSE15Q4)-L(SSExDx) 1028 1029 .int L(SSE0Q5) -L(SSExDx) 1030 .int L(SSE1Q5) -L(SSExDx) 1031 .int L(SSE2Q5) -L(SSExDx) 1032 .int L(SSE3Q5) -L(SSExDx) 1033 .int L(SSE4Q5) -L(SSExDx) 1034 .int L(SSE5Q5) -L(SSExDx) 1035 .int L(SSE6Q5) -L(SSExDx) 1036 .int L(SSE7Q5) -L(SSExDx) 1037 1038 .int L(SSE8Q5) -L(SSExDx) 1039 .int L(SSE9Q5) -L(SSExDx) 1040 .int L(SSE10Q5)-L(SSExDx) 1041 .int L(SSE11Q5)-L(SSExDx) 1042 .int L(SSE12Q5)-L(SSExDx) 1043 .int L(SSE13Q5)-L(SSExDx) 1044 .int L(SSE14Q5)-L(SSExDx) 1045 .int L(SSE15Q5)-L(SSExDx) 1046 1047 .int L(SSE0Q6) -L(SSExDx) 1048 .int L(SSE1Q6) -L(SSExDx) 1049 .int L(SSE2Q6) -L(SSExDx) 1050 .int L(SSE3Q6) -L(SSExDx) 1051 .int L(SSE4Q6) -L(SSExDx) 1052 .int L(SSE5Q6) -L(SSExDx) 1053 .int L(SSE6Q6) -L(SSExDx) 1054 .int L(SSE7Q6) -L(SSExDx) 1055 1056 .int L(SSE8Q6) -L(SSExDx) 1057 .int L(SSE9Q6) -L(SSExDx) 1058 .int L(SSE10Q6)-L(SSExDx) 1059 .int L(SSE11Q6)-L(SSExDx) 1060 .int L(SSE12Q6)-L(SSExDx) 1061 .int L(SSE13Q6)-L(SSExDx) 1062 .int L(SSE14Q6)-L(SSExDx) 1063 .int L(SSE15Q6)-L(SSExDx) 1064 1065 .int L(SSE0Q7) -L(SSExDx) 1066 .int L(SSE1Q7) -L(SSExDx) 1067 .int L(SSE2Q7) -L(SSExDx) 1068 .int L(SSE3Q7) -L(SSExDx) 1069 .int L(SSE4Q7) -L(SSExDx) 1070 .int L(SSE5Q7) -L(SSExDx) 1071 .int L(SSE6Q7) -L(SSExDx) 1072 .int L(SSE7Q7) -L(SSExDx) 1073 1074 .int L(SSE8Q7) -L(SSExDx) 1075 .int L(SSE9Q7) -L(SSExDx) 1076 .int L(SSE10Q7)-L(SSExDx) 1077 .int L(SSE11Q7)-L(SSExDx) 1078 .int L(SSE12Q7)-L(SSExDx) 1079 .int L(SSE13Q7)-L(SSExDx) 1080 .int L(SSE14Q7)-L(SSExDx) 1081 .int L(SSE15Q7)-L(SSExDx) 1082 1083 .int L(SSE0Q8) -L(SSExDx) 1084 .int L(SSE1Q8) -L(SSExDx) 1085 .int L(SSE2Q8) -L(SSExDx) 1086 .int L(SSE3Q8) -L(SSExDx) 1087 .int L(SSE4Q8) -L(SSExDx) 1088 .int L(SSE5Q8) -L(SSExDx) 1089 .int L(SSE6Q8) -L(SSExDx) 1090 .int L(SSE7Q8) -L(SSExDx) 1091 1092 .int L(SSE8Q8) -L(SSExDx) 1093 .int L(SSE9Q8) -L(SSExDx) 1094 .int L(SSE10Q8)-L(SSExDx) 1095 .int L(SSE11Q8)-L(SSExDx) 1096 .int L(SSE12Q8)-L(SSExDx) 1097 .int L(SSE13Q8)-L(SSExDx) 1098 .int L(SSE14Q8)-L(SSExDx) 1099 .int L(SSE15Q8)-L(SSExDx) 1100 1101 .int L(SSE0Q9) -L(SSExDx) 1102 .int L(SSE1Q9) -L(SSExDx) 1103 .int L(SSE2Q9) -L(SSExDx) 1104 .int L(SSE3Q9) -L(SSExDx) 1105 .int L(SSE4Q9) -L(SSExDx) 1106 .int L(SSE5Q9) -L(SSExDx) 1107 .int L(SSE6Q9) -L(SSExDx) 1108 .int L(SSE7Q9) -L(SSExDx) 1109 1110 .int L(SSE8Q9) -L(SSExDx) 1111 .int L(SSE9Q9) -L(SSExDx) 1112 .int L(SSE10Q9)-L(SSExDx) 1113 .int L(SSE11Q9)-L(SSExDx) 1114 .int L(SSE12Q9)-L(SSExDx) 1115 .int L(SSE13Q9)-L(SSExDx) 1116 .int L(SSE14Q9)-L(SSExDx) 1117 .int L(SSE15Q9)-L(SSExDx) 1118 1119 .int L(SSE0QA) -L(SSExDx) 1120 .int L(SSE1QA) -L(SSExDx) 1121 .int L(SSE2QA) -L(SSExDx) 1122 .int L(SSE3QA) -L(SSExDx) 1123 .int L(SSE4QA) -L(SSExDx) 1124 .int L(SSE5QA) -L(SSExDx) 1125 .int L(SSE6QA) -L(SSExDx) 1126 .int L(SSE7QA) -L(SSExDx) 1127 1128 .int L(SSE8QA) -L(SSExDx) 1129 .int L(SSE9QA) -L(SSExDx) 1130 .int L(SSE10QA)-L(SSExDx) 1131 .int L(SSE11QA)-L(SSExDx) 1132 .int L(SSE12QA)-L(SSExDx) 1133 .int L(SSE13QA)-L(SSExDx) 1134 .int L(SSE14QA)-L(SSExDx) 1135 .int L(SSE15QA)-L(SSExDx) 1136 1137 .int L(SSE0QB) -L(SSExDx) 1138 .int L(SSE1QB) -L(SSExDx) 1139 .int L(SSE2QB) -L(SSExDx) 1140 .int L(SSE3QB) -L(SSExDx) 1141 .int L(SSE4QB) -L(SSExDx) 1142 .int L(SSE5QB) -L(SSExDx) 1143 .int L(SSE6QB) -L(SSExDx) 1144 .int L(SSE7QB) -L(SSExDx) 1145 1146 .int L(SSE8QB) -L(SSExDx) 1147 .int L(SSE9QB) -L(SSExDx) 1148 .int L(SSE10QB)-L(SSExDx) 1149 .int L(SSE11QB)-L(SSExDx) 1150 .int L(SSE12QB)-L(SSExDx) 1151 .int L(SSE13QB)-L(SSExDx) 1152 .int L(SSE14QB)-L(SSExDx) 1153 .int L(SSE15QB)-L(SSExDx) 1154 1155 SET_SIZE(memset) 1156