Lines 1040-1046
Link Here
|
1040 |
{ |
1040 |
{ |
1041 |
// rdx: bg_linebuf |
1041 |
// rdx: bg_linebuf |
1042 |
// rsi: spr_linebuf |
1042 |
// rsi: spr_linebuf |
1043 |
// rbp: vce.color_table_cache |
1043 |
// r8: vce.color_table_cache |
1044 |
// rdi: target |
1044 |
// rdi: target |
1045 |
// rcx: count |
1045 |
// rcx: count |
1046 |
|
1046 |
|
Lines 1051-1057
Link Here
|
1051 |
asm volatile( |
1051 |
asm volatile( |
1052 |
"push %%rbx\n\t" |
1052 |
"push %%rbx\n\t" |
1053 |
|
1053 |
|
1054 |
"movq %%rax, %%rbp\n\t" |
1054 |
"movq %%rax, %%r8\n\t" |
1055 |
"negq %%rcx\n\t" |
1055 |
"negq %%rcx\n\t" |
1056 |
"xorq %%rax, %%rax\n\t" |
1056 |
"xorq %%rax, %%rax\n\t" |
1057 |
"xorq %%rbx, %%rbx\n\t" |
1057 |
"xorq %%rbx, %%rbx\n\t" |
Lines 1066-1072
Link Here
|
1066 |
"cmovbe %%ebx, %%eax\n\t" |
1066 |
"cmovbe %%ebx, %%eax\n\t" |
1067 |
"andl $511, %%eax\n\t" |
1067 |
"andl $511, %%eax\n\t" |
1068 |
|
1068 |
|
1069 |
"movl (%%rbp, %%rax, 4), %%ebx\n\t" |
1069 |
"movl (%%r8, %%rax, 4), %%ebx\n\t" |
1070 |
"movl %%ebx, (%%rdi, %%rcx, 4)\n\t" |
1070 |
"movl %%ebx, (%%rdi, %%rcx, 4)\n\t" |
1071 |
|
1071 |
|
1072 |
"addq $1, %%rcx\n\t" |
1072 |
"addq $1, %%rcx\n\t" |
Lines 1075-1081
Link Here
|
1075 |
"pop %%rbx\n\t" |
1075 |
"pop %%rbx\n\t" |
1076 |
: "=c" (dummy), "=a" (dummy) |
1076 |
: "=c" (dummy), "=a" (dummy) |
1077 |
: "d" (bg_linebuf + count), "S" (spr_linebuf + count), "D" (target + count), "c" (count), "a" (vce.color_table_cache) |
1077 |
: "d" (bg_linebuf + count), "S" (spr_linebuf + count), "D" (target + count), "c" (count), "a" (vce.color_table_cache) |
1078 |
: "memory", "cc", "rbp" |
1078 |
: "memory", "cc", "r8" |
1079 |
); |
1079 |
); |
1080 |
} |
1080 |
} |
1081 |
|
1081 |
|