; @OC@ test ; Generic unary operations supporting all sizes and their various ; addressing modes. ; Some fairly big pseudorandom numbers we don't want to compute ; as differences in actual data or code. .set const_int_32, 0x1b94452b .set const_int_m32, -3513208907 .set two701867, 2701867 ; Other constants that are not differences .set forty2, 42 .set mforty2, -42 .set three2767, 32767 .set six5535, 65535 .text .syntax no_register_prefix notstart: .dword 0 start: ;;;;;;;;;;;;;;;;; ; ; r @OC@.b r3 @OC@.w r5 @OC@.d r10 @OC@ r7 @OC@ r6 ;;;;;;;;;;;;;;;;; ; ; [r] @OC@.b [r0] @OC@.w [r5] @OC@.d [r10] @OC@ [r0] @OC@ [r3] ;;;;;;;;;;;;;;;;; ; ; [r+] @OC@.b [r0+] @OC@.w [r5+] @OC@.d [r10+] @OC@ [r4+] @OC@ [r1+] ;;;;;;;;;;;;;;;;; ; ; [r+X] ; [r+r.b] @OC@.b [r2+r0.b] @OC@.w [r2+r5.b] @OC@.d [r2+r10.b] @OC@ [r11+r13.b] @OC@ [r2+r10.b] ; [r+[r].b] @OC@.b [r2+[r0].b] @OC@.w [r2+[r5].b] @OC@.d [r2+[r10].b] @OC@ [r12+[r5].b] @OC@ [r13+[r10].b] ; [r+[r+].b] @OC@.b [r2+[r0+].b] @OC@.w [r2+[r5+].b] @OC@.d [r2+[r10+].b] @OC@ [r2+[r13+].b] @OC@ [r12+[r0+].b] ; [r+r.w] @OC@.b [r2+r0.w] @OC@.w [r2+r5.w] @OC@.d [r2+r10.w] @OC@ [r5+r11.w] @OC@ [r1+r1.w] ; [r+[r].w] @OC@.b [r2+[r0].w] @OC@.w [r2+[r5].w] @OC@.d [r2+[r10].w] @OC@ [r0+[r0].w] @OC@ [r2+[r7].w] ; [r+[r+].w] @OC@.b [r2+[r0+].w] @OC@.w [r2+[r5+].w] @OC@.d [r2+[r10+].w] @OC@ [r2+[r3+].w] @OC@ [r7+[r8+].w] ; [r+r.d] @OC@.b [r2+r0.d] @OC@.w [r2+r5.d] @OC@.d [r2+r10.d] @OC@ [r2+r5.d] @OC@ [r3+r10.d] ; [r+[r].d] @OC@.b [r2+[r0].d] @OC@.w [r2+[r5].d] @OC@.d [r2+[r10].d] @OC@ [r5+[r2].d] @OC@ [r12+[r10].d] ; [r+[r+].d] @OC@.b [r2+[r0+].d] @OC@.w [r2+[r5+].d] @OC@.d [r2+[r10+].d] @OC@ [r1+[r5+].d] @OC@ [r2+[r10+].d] ; [r+const] ; Note that I forgot 16-bit offsets and 32-bit offsets here and later. ; Maybe add them later if it feels necessary. @OC@.b [r2+0] @OC@.b [r2+1] @OC@.b [r2+127] @OC@.b [r2+128] @OC@.b [r2+-1] @OC@.b [r2+-127] @OC@.b [r2+-128] @OC@.b [r2+255] @OC@.b [r2+42] @OC@.b [r2+-42] @OC@.b [r2-42] @OC@.b [r2+forty2] @OC@.b [r2+mforty2] @OC@.b [r2+-forty2] @OC@.b [r2+-mforty2] @OC@.b [r2-forty2] @OC@.b [r2-mforty2] @OC@.b [r2+externalsym] ; Note that I missed 32-bit offsets (except -32769) here and later. ; Maybe add them later if it feels necessary. @OC@.w [r2+0] @OC@.w [r2+1] @OC@.w [r2+127] @OC@.w [r2+128] @OC@.w [r2+-1] @OC@.w [r2-1] @OC@.w [r2+-127] @OC@.w [r2+-128] @OC@.w [r2+-129] @OC@.w [r2-127] @OC@.w [r2-128] @OC@.w [r2-129] @OC@.w [r2+255] @OC@.w [r2+-255] @OC@.w [r2-255] @OC@.w [r2+256] @OC@.w [r2-256] @OC@.w [r2+-8856] @OC@.w [r2-8856] @OC@.w [r2+8856] @OC@.w [r2+42] @OC@.w [r2+-42] @OC@.w [r2-42] @OC@.w [r2+forty2] @OC@.w [r2+mforty2] @OC@.w [r2+-forty2] @OC@.w [r2-forty2] @OC@.w [r2+-mforty2] @OC@.w [r2+three2767] @OC@.w [r2+three2767+1] @OC@.w [r2+three2767+2] @OC@.w [r2+-three2767] @OC@.w [r2+-(three2767+1)] @OC@.w [r2+-(three2767+2)] @OC@.w [r2-three2767] @OC@.w [r2-(three2767+1)] @OC@.w [r2-(three2767+2)] @OC@.w [r2+six5535] @OC@.w [r2+externalsym] @OC@.d [r2+0] @OC@.d [r2+1] @OC@.d [r2+127] @OC@.d [r2+128] @OC@.d [r2+-1] @OC@.d [r2-1] @OC@.d [r2+-127] @OC@.d [r2+-128] @OC@.d [r2-127] @OC@.d [r2-128] @OC@.d [r2+255] @OC@.d [r2+-255] @OC@.d [r2-255] @OC@.d [r2+256] @OC@.d [r2-256] @OC@.d [r2-8856] @OC@.d [r2+-256] @OC@.d [r2+-8856] @OC@.d [r2+8856] @OC@.d [r2+2781868] @OC@.d [r2+-2701867] @OC@.d [r2+0x9ec0ceac] @OC@.d [r2+-0x7ec0cead] @OC@.d [r2-0x7ec0cead] @OC@.d [r2+const_int_m32] @OC@.d [r2+const_int_32] @OC@.d [r2+42] @OC@.d [r2-42] @OC@.d [r2+-42] @OC@.d [r2+forty2] @OC@.d [r2+mforty2] @OC@.d [r2-forty2] @OC@.d [r2-mforty2] @OC@.d [r2+-forty2] @OC@.d [r2+-mforty2] @OC@.d [r2+three2767] @OC@.d [r2+three2767+1] @OC@.d [r2+three2767+2] @OC@.d [r2+-three2767] @OC@.d [r2+-(three2767+1)] @OC@.d [r2+-(three2767+2)] @OC@.d [r2-three2767] @OC@.d [r2-(three2767+1)] @OC@.d [r2-(three2767+2)] @OC@.d [r2+six5535] @OC@.d [r2+six5535+1] @OC@.d [r2+two701867] @OC@.d [r2+-two701867] @OC@.d [r2-two701867] @OC@.d [r2+externalsym] @OC@ [r2+0] @OC@ [r2+1] @OC@ [r2+127] @OC@ [r2+128] @OC@ [r2+-1] @OC@ [r2-1] @OC@ [r2+-127] @OC@ [r2+-128] @OC@ [r2-127] @OC@ [r2-128] @OC@ [r2+255] @OC@ [r2+-255] @OC@ [r2-255] @OC@ [r2+256] @OC@ [r2-256] @OC@ [r2-8856] @OC@ [r2+-256] @OC@ [r2+-8856] @OC@ [r2+8856] @OC@ [r2+2781868] @OC@ [r2+-2701867] @OC@ [r2+0x9ec0ceac] @OC@ [r2+-0x7ec0cead] @OC@ [r2-0x7ec0cead] @OC@ [r2+const_int_m32] @OC@ [r2+const_int_32] @OC@ [r2+42] @OC@ [r2-42] @OC@ [r2+-42] @OC@ [r2+forty2] @OC@ [r2+mforty2] @OC@ [r2-forty2] @OC@ [r2-mforty2] @OC@ [r2+-forty2] @OC@ [r2+-mforty2] @OC@ [r2+three2767] @OC@ [r2+three2767+1] @OC@ [r2+three2767+2] @OC@ [r2+-three2767] @OC@ [r2+-(three2767+1)] @OC@ [r2+-(three2767+2)] @OC@ [r2-three2767] @OC@ [r2-(three2767+1)] @OC@ [r2-(three2767+2)] @OC@ [r2+six5535] @OC@ [r2+six5535+1] @OC@ [r2+two701867] @OC@ [r2+-two701867] @OC@ [r2-two701867] @OC@ [r2+externalsym] @OC@ [r2+0] @OC@ [r2+1] @OC@ [r2+127] @OC@ [r2+128] @OC@ [r2+-1] @OC@ [r2-1] @OC@ [r2+-127] @OC@ [r2+-128] @OC@ [r2-127] @OC@ [r2-128] @OC@ [r2+255] @OC@ [r2+-255] @OC@ [r2-255] @OC@ [r2+256] @OC@ [r2-256] @OC@ [r2-8856] @OC@ [r2+-256] @OC@ [r2+-8856] @OC@ [r2+8856] @OC@ [r2+2781868] @OC@ [r2+-2701867] @OC@ [r2+0x9ec0ceac] @OC@ [r2+-0x7ec0cead] @OC@ [r2-0x7ec0cead] @OC@ [r2+const_int_m32] @OC@ [r2+const_int_32] @OC@ [r2+42] @OC@ [r2-42] @OC@ [r2+-42] @OC@ [r2+forty2] @OC@ [r2+mforty2] @OC@ [r2-forty2] @OC@ [r2-mforty2] @OC@ [r2+-forty2] @OC@ [r2+-mforty2] @OC@ [r2+three2767] @OC@ [r2+three2767+1] @OC@ [r2+three2767+2] @OC@ [r2+-three2767] @OC@ [r2+-(three2767+1)] @OC@ [r2+-(three2767+2)] @OC@ [r2-three2767] @OC@ [r2-(three2767+1)] @OC@ [r2-(three2767+2)] @OC@ [r2+six5535] @OC@ [r2+six5535+1] @OC@ [r2+two701867] @OC@ [r2+-two701867] @OC@ [r2-two701867] @OC@ [r2+externalsym] ;;;;;;;;;;;;;;;;; ; ; [r=r+X],r ; [r=r+r.b],r @OC@.b [r12=r2+r0.b] @OC@.w [r12=r2+r5.b] @OC@.d [r12=r2+r10.b] @OC@ [r1=r2+r3.b] @OC@ [r12=r2+r10.b] ; [r=r+[r].b],r @OC@.b [r12=r2+[r0].b] @OC@.w [r12=r2+[r5].b] @OC@.d [r12=r2+[r10].b] @OC@ [r0=r2+[r5].b] @OC@ [r3=r2+[r10].b] ; [r=r+[r+].b],r @OC@.b [r12=r2+[r0+].b] @OC@.w [r12=r2+[r5+].b] @OC@.d [r12=r2+[r10+].b] @OC@.w [r12=r2+[r5+].b] @OC@.d [r12=r2+[r10+].b] @OC@ [r5=r2+[r4+].b] @OC@ [r2=r4+[r7+].b] ; [r=r+r.w],r @OC@.b [r12=r2+r0.w] @OC@.w [r12=r2+r5.w] @OC@.d [r12=r2+r10.w] @OC@ [r12=r12+r5.w] @OC@ [r1=r3+r10.w] ; [r=r+[r].w],r @OC@.b [r12=r2+[r0].w] @OC@.w [r12=r2+[r5].w] @OC@.d [r12=r2+[r10].w] @OC@ [r12=r2+[r5].w] @OC@ [r12=r7+[r10].w] ; [r=r+[r+].w],r @OC@.b [r12=r2+[r0+].w] @OC@.w [r12=r2+[r5+].w] @OC@.d [r12=r2+[r10+].w] @OC@.w [r12=r2+[r5+].w] @OC@.d [r12=r2+[r10+].w] @OC@ [r12=r6+[r7+].w] @OC@ [r12=r3+[r1+].w] ; [r=r+r.d],r @OC@.b [r12=r2+r0.d] @OC@.w [r12=r2+r5.d] @OC@.d [r12=r2+r10.d] @OC@ [r4=r2+r5.d] @OC@ [r12=r2+r10.d] ; [r=r+[r].d],r @OC@.b [r12=r2+[r0].d] @OC@.w [r12=r2+[r5].d] @OC@.d [r12=r2+[r10].d] @OC@ [r12=r3+[r5].d] @OC@ [r12=r4+[r10].d] ; [r=r+[r+].d],r @OC@.b [r12=r2+[r0+].d] @OC@.w [r12=r2+[r5+].d] @OC@.d [r12=r2+[r10+].d] @OC@.w [r12=r2+[r5+].d] @OC@.d [r12=r2+[r10+].d] @OC@ [r12=r8+[r5+].d] @OC@ [r12=r9+[r10+].d] ; [r=r+const],r @OC@.b [r12=r2+0] @OC@.b [r12=r2+1] @OC@.b [r12=r2+127] @OC@.b [r12=r2+128] @OC@.b [r12=r2+-1] @OC@.b [r12=r2+-127] @OC@.b [r12=r2+-128] @OC@.b [r12=r2+255] @OC@.b [r12=r2+42] @OC@.b [r12=r2+-42] @OC@.b [r12=r2-42] @OC@.b [r12=r2+forty2] @OC@.b [r12=r2+mforty2] @OC@.b [r12=r2+-forty2] @OC@.b [r12=r2+-mforty2] @OC@.b [r12=r2-forty2] @OC@.b [r12=r2-mforty2] @OC@.b [r12=r2+externalsym] @OC@.w [r12=r2+0] @OC@.w [r12=r2+1] @OC@.w [r12=r2+127] @OC@.w [r12=r2+128] @OC@.w [r12=r2+-1] @OC@.w [r12=r2-1] @OC@.w [r12=r2+-127] @OC@.w [r12=r2+-128] @OC@.w [r12=r2+-129] @OC@.w [r12=r2-127] @OC@.w [r12=r2-128] @OC@.w [r12=r2-129] @OC@.w [r12=r2+255] @OC@.w [r12=r2+-255] @OC@.w [r12=r2-255] @OC@.w [r12=r2+256] @OC@.w [r12=r2-256] @OC@.w [r12=r2+-8856] @OC@.w [r12=r2-8856] @OC@.w [r12=r2+8856] @OC@.w [r12=r2+42] @OC@.w [r12=r2+-42] @OC@.w [r12=r2-42] @OC@.w [r12=r2+forty2] @OC@.w [r12=r2+mforty2] @OC@.w [r12=r2+-forty2] @OC@.w [r12=r2-forty2] @OC@.w [r12=r2+-mforty2] @OC@.w [r12=r2+three2767] @OC@.w [r12=r2+three2767+1] @OC@.w [r12=r2+three2767+2] @OC@.w [r12=r2+-three2767] @OC@.w [r12=r2+-(three2767+1)] @OC@.w [r12=r2+-(three2767+2)] @OC@.w [r12=r2-three2767] @OC@.w [r12=r2-(three2767+1)] @OC@.w [r12=r2-(three2767+2)] @OC@.w [r12=r2+six5535] @OC@.w [r12=r2+externalsym] @OC@.d [r12=r2+0] @OC@.d [r12=r2+1] @OC@.d [r12=r2+127] @OC@.d [r12=r2+128] @OC@.d [r12=r2+-1] @OC@.d [r12=r2-1] @OC@.d [r12=r2+-127] @OC@.d [r12=r2+-128] @OC@.d [r12=r2-127] @OC@.d [r12=r2-128] @OC@.d [r12=r2+255] @OC@.d [r12=r2+-255] @OC@.d [r12=r2-255] @OC@.d [r12=r2+256] @OC@.d [r12=r2-256] @OC@.d [r12=r2-8856] @OC@.d [r12=r2+-256] @OC@.d [r12=r2+-8856] @OC@.d [r12=r2+8856] @OC@.d [r12=r2+2781868] @OC@.d [r12=r2+-2701867] @OC@.d [r12=r2+0x9ec0ceac] @OC@.d [r12=r2+-0x7ec0cead] @OC@.d [r12=r2-0x7ec0cead] @OC@.d [r12=r2+const_int_m32] @OC@.d [r12=r2+const_int_32] @OC@.d [r12=r2+42] @OC@.d [r12=r2-42] @OC@.d [r12=r2+-42] @OC@.d [r12=r2+forty2] @OC@.d [r12=r2+mforty2] @OC@.d [r12=r2-forty2] @OC@.d [r12=r2-mforty2] @OC@.d [r12=r2+-forty2] @OC@.d [r12=r2+-mforty2] @OC@.d [r12=r2+three2767] @OC@.d [r12=r2+three2767+1] @OC@.d [r12=r2+three2767+2] @OC@.d [r12=r2+-three2767] @OC@.d [r12=r2+-(three2767+1)] @OC@.d [r12=r2+-(three2767+2)] @OC@.d [r12=r2-three2767] @OC@.d [r12=r2-(three2767+1)] @OC@.d [r12=r2-(three2767+2)] @OC@.d [r12=r2+six5535] @OC@.d [r12=r2+six5535+1] @OC@.d [r12=r2+two701867] @OC@.d [r12=r2+-two701867] @OC@.d [r12=r2-two701867] @OC@.d [r12=r2+externalsym] @OC@ [r12=r2+0] @OC@ [r12=r2+1] @OC@ [r12=r2+127] @OC@ [r12=r2+128] @OC@ [r12=r2+-1] @OC@ [r12=r2-1] @OC@ [r12=r2+-127] @OC@ [r12=r2+-128] @OC@ [r12=r2-127] @OC@ [r12=r2-128] @OC@ [r12=r2+255] @OC@ [r12=r2+-255] @OC@ [r12=r2-255] @OC@ [r12=r2+256] @OC@ [r12=r2-256] @OC@ [r12=r2-8856] @OC@ [r12=r2+-256] @OC@ [r12=r2+-8856] @OC@ [r12=r2+8856] @OC@ [r12=r2+2781868] @OC@ [r12=r2+-2701867] @OC@ [r12=r2+0x9ec0ceac] @OC@ [r12=r2+-0x7ec0cead] @OC@ [r12=r2-0x7ec0cead] @OC@ [r12=r2+const_int_m32] @OC@ [r12=r2+const_int_32] @OC@ [r12=r2+42] @OC@ [r12=r2-42] @OC@ [r12=r2+-42] @OC@ [r12=r2+forty2] @OC@ [r12=r2+mforty2] @OC@ [r12=r2-forty2] @OC@ [r12=r2-mforty2] @OC@ [r12=r2+-forty2] @OC@ [r12=r2+-mforty2] @OC@ [r12=r2+three2767] @OC@ [r12=r2+three2767+1] @OC@ [r12=r2+three2767+2] @OC@ [r12=r2+-three2767] @OC@ [r12=r2+-(three2767+1)] @OC@ [r12=r2+-(three2767+2)] @OC@ [r12=r2-three2767] @OC@ [r12=r2-(three2767+1)] @OC@ [r12=r2-(three2767+2)] @OC@ [r12=r2+six5535] @OC@ [r12=r2+six5535+1] @OC@ [r12=r2+two701867] @OC@ [r12=r2+-two701867] @OC@ [r12=r2-two701867] @OC@ [r12=r2+externalsym] ;;;;;;;;;;;;;;;;;;; ; ; [[r(+)]],r @OC@.b [[r3]] @OC@.w [[r2]] @OC@.d [[r3]] @OC@ [[r2]] @OC@ [[r3]] @OC@.b [[r9+]] @OC@.w [[r3+]] @OC@.d [[r1+]] @OC@ [[r3+]] @OC@ [[r1+]] @OC@.b [externalsym] @OC@.w [externalsym] @OC@.d [externalsym] @OC@ [externalsym] @OC@.b [notstart] @OC@.w [notstart] @OC@.d [notstart] @OC@ [notstart] end: