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