|
|
1.1 ! root 1: // ! 2: // r_aliasa.s ! 3: // x86 assembly-language Alias model transform and project code. ! 4: // ! 5: ! 6: #include "qasm.h" ! 7: #include "d_ifacea.h" ! 8: ! 9: #if id386 ! 10: ! 11: .data ! 12: Ltemp0: .long 0 ! 13: Ltemp1: .long 0 ! 14: ! 15: .text ! 16: ! 17: #define pfv0 8+4 ! 18: #define pfv1 8+8 ! 19: #define out 8+12 ! 20: ! 21: .globl C(R_Alias_clip_bottom) ! 22: C(R_Alias_clip_bottom): ! 23: pushl %esi ! 24: pushl %edi ! 25: ! 26: movl pfv0(%esp),%esi ! 27: movl pfv1(%esp),%edi ! 28: ! 29: movl C(r_refdef)+rd_aliasvrectbottom,%eax ! 30: ! 31: LDoForwardOrBackward: ! 32: ! 33: movl fv_v+4(%esi),%edx ! 34: movl fv_v+4(%edi),%ecx ! 35: ! 36: cmpl %ecx,%edx ! 37: jl LDoForward ! 38: ! 39: movl fv_v+4(%esi),%ecx ! 40: movl fv_v+4(%edi),%edx ! 41: movl pfv0(%esp),%edi ! 42: movl pfv1(%esp),%esi ! 43: ! 44: LDoForward: ! 45: ! 46: subl %edx,%ecx ! 47: subl %edx,%eax ! 48: movl %ecx,Ltemp1 ! 49: movl %eax,Ltemp0 ! 50: fildl Ltemp1 ! 51: fildl Ltemp0 ! 52: movl out(%esp),%edx ! 53: movl $2,%eax ! 54: ! 55: fdivp %st(0),%st(1) // scale ! 56: ! 57: LDo3Forward: ! 58: fildl fv_v+0(%esi) // fv0v0 | scale ! 59: fildl fv_v+0(%edi) // fv1v0 | fv0v0 | scale ! 60: fildl fv_v+4(%esi) // fv0v1 | fv1v0 | fv0v0 | scale ! 61: fildl fv_v+4(%edi) // fv1v1 | fv0v1 | fv1v0 | fv0v0 | scale ! 62: fildl fv_v+8(%esi) // fv0v2 | fv1v1 | fv0v1 | fv1v0 | fv0v0 | scale ! 63: fildl fv_v+8(%edi) // fv1v2 | fv0v2 | fv1v1 | fv0v1 | fv1v0 | fv0v0 | ! 64: // scale ! 65: fxch %st(5) // fv0v0 | fv0v2 | fv1v1 | fv0v1 | fv1v0 | fv1v2 | ! 66: // scale ! 67: fsubr %st(0),%st(4) // fv0v0 | fv0v2 | fv1v1 | fv0v1 | fv1v0-fv0v0 | ! 68: // fv1v2 | scale ! 69: fxch %st(3) // fv0v1 | fv0v2 | fv1v1 | fv0v0 | fv1v0-fv0v0 | ! 70: // fv1v2 | scale ! 71: fsubr %st(0),%st(2) // fv0v1 | fv0v2 | fv1v1-fv0v1 | fv0v0 | ! 72: // fv1v0-fv0v0 | fv1v2 | scale ! 73: fxch %st(1) // fv0v2 | fv0v1 | fv1v1-fv0v1 | fv0v0 | ! 74: // fv1v0-fv0v0 | fv1v2 | scale ! 75: fsubr %st(0),%st(5) // fv0v2 | fv0v1 | fv1v1-fv0v1 | fv0v0 | ! 76: // fv1v0-fv0v0 | fv1v2-fv0v2 | scale ! 77: fxch %st(6) // scale | fv0v1 | fv1v1-fv0v1 | fv0v0 | ! 78: // fv1v0-fv0v0 | fv1v2-fv0v2 | fv0v2 ! 79: fmul %st(0),%st(4) // scale | fv0v1 | fv1v1-fv0v1 | fv0v0 | ! 80: // (fv1v0-fv0v0)*scale | fv1v2-fv0v2 | fv0v2 ! 81: addl $12,%edi ! 82: fmul %st(0),%st(2) // scale | fv0v1 | (fv1v1-fv0v1)*scale | fv0v0 | ! 83: // (fv1v0-fv0v0)*scale | fv1v2-fv0v2 | fv0v2 ! 84: addl $12,%esi ! 85: addl $12,%edx ! 86: fmul %st(0),%st(5) // scale | fv0v1 | (fv1v1-fv0v1)*scale | fv0v0 | ! 87: // (fv1v0-fv0v0)*scale | (fv1v2-fv0v2)*scale | ! 88: // fv0v2 ! 89: fxch %st(3) // fv0v0 | fv0v1 | (fv1v1-fv0v1)*scale | scale | ! 90: // (fv1v0-fv0v0)*scale | (fv1v2-fv0v2)*scale | ! 91: // fv0v2 ! 92: faddp %st(0),%st(4) // fv0v1 | (fv1v1-fv0v1)*scale | scale | ! 93: // fv0v0+(fv1v0-fv0v0)*scale | ! 94: // (fv1v2-fv0v2)*scale | fv0v2 ! 95: faddp %st(0),%st(1) // fv0v1+(fv1v1-fv0v1)*scale | scale | ! 96: // fv0v0+(fv1v0-fv0v0)*scale | ! 97: // (fv1v2-fv0v2)*scale | fv0v2 ! 98: fxch %st(4) // fv0v2 | scale | fv0v0+(fv1v0-fv0v0)*scale | ! 99: // (fv1v2-fv0v2)*scale | fv0v1+(fv1v1-fv0v1)*scale ! 100: faddp %st(0),%st(3) // scale | fv0v0+(fv1v0-fv0v0)*scale | ! 101: // fv0v2+(fv1v2-fv0v2)*scale | ! 102: // fv0v1+(fv1v1-fv0v1)*scale ! 103: fxch %st(1) // fv0v0+(fv1v0-fv0v0)*scale | scale | ! 104: // fv0v2+(fv1v2-fv0v2)*scale | ! 105: // fv0v1+(fv1v1-fv0v1)*scale ! 106: fadds float_point5 ! 107: fxch %st(3) // fv0v1+(fv1v1-fv0v1)*scale | scale | ! 108: // fv0v2+(fv1v2-fv0v2)*scale | ! 109: // fv0v0+(fv1v0-fv0v0)*scale ! 110: fadds float_point5 ! 111: fxch %st(2) // fv0v2+(fv1v2-fv0v2)*scale | scale | ! 112: // fv0v1+(fv1v1-fv0v1)*scale | ! 113: // fv0v0+(fv1v0-fv0v0)*scale ! 114: fadds float_point5 ! 115: fxch %st(3) // fv0v0+(fv1v0-fv0v0)*scale | scale | ! 116: // fv0v1+(fv1v1-fv0v1)*scale | ! 117: // fv0v2+(fv1v2-fv0v2)*scale ! 118: fistpl fv_v+0-12(%edx) // scale | fv0v1+(fv1v1-fv0v1)*scale | ! 119: // fv0v2+(fv1v2-fv0v2)*scale ! 120: fxch %st(1) // fv0v1+(fv1v1-fv0v1)*scale | scale | ! 121: // fv0v2+(fv1v2-fv0v2)*scale | scale ! 122: fistpl fv_v+4-12(%edx) // scale | fv0v2+(fv1v2-fv0v2)*scale ! 123: fxch %st(1) // fv0v2+(fv1v2-fv0v2)*sc | scale ! 124: fistpl fv_v+8-12(%edx) // scale ! 125: ! 126: decl %eax ! 127: jnz LDo3Forward ! 128: ! 129: fstp %st(0) ! 130: ! 131: popl %edi ! 132: popl %esi ! 133: ! 134: ret ! 135: ! 136: ! 137: .globl C(R_Alias_clip_top) ! 138: C(R_Alias_clip_top): ! 139: pushl %esi ! 140: pushl %edi ! 141: ! 142: movl pfv0(%esp),%esi ! 143: movl pfv1(%esp),%edi ! 144: ! 145: movl C(r_refdef)+rd_aliasvrect+4,%eax ! 146: jmp LDoForwardOrBackward ! 147: ! 148: ! 149: ! 150: .globl C(R_Alias_clip_right) ! 151: C(R_Alias_clip_right): ! 152: pushl %esi ! 153: pushl %edi ! 154: ! 155: movl pfv0(%esp),%esi ! 156: movl pfv1(%esp),%edi ! 157: ! 158: movl C(r_refdef)+rd_aliasvrectright,%eax ! 159: ! 160: LRightLeftEntry: ! 161: ! 162: ! 163: movl fv_v+4(%esi),%edx ! 164: movl fv_v+4(%edi),%ecx ! 165: ! 166: cmpl %ecx,%edx ! 167: movl fv_v+0(%esi),%edx ! 168: ! 169: movl fv_v+0(%edi),%ecx ! 170: jl LDoForward2 ! 171: ! 172: movl fv_v+0(%esi),%ecx ! 173: movl fv_v+0(%edi),%edx ! 174: movl pfv0(%esp),%edi ! 175: movl pfv1(%esp),%esi ! 176: ! 177: LDoForward2: ! 178: ! 179: jmp LDoForward ! 180: ! 181: ! 182: .globl C(R_Alias_clip_left) ! 183: C(R_Alias_clip_left): ! 184: pushl %esi ! 185: pushl %edi ! 186: ! 187: movl pfv0(%esp),%esi ! 188: movl pfv1(%esp),%edi ! 189: ! 190: movl C(r_refdef)+rd_aliasvrect+0,%eax ! 191: jmp LRightLeftEntry ! 192: ! 193: ! 194: #endif // id386 ! 195:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.