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