142 lines
2.6 KiB
ArmAsm
142 lines
2.6 KiB
ArmAsm
# Check 64bit BMI instructions
|
|
|
|
.allow_index_reg
|
|
.text
|
|
_start:
|
|
|
|
# Test for op r16, r/m16
|
|
tzcnt %ax,%bx
|
|
tzcnt (%rcx),%bx
|
|
tzcnt (%rcx),%r15w
|
|
|
|
# Test for op r32, r32, r/m32
|
|
andn %eax,%ebx,%esi
|
|
andn (%rcx),%ebx,%esi
|
|
andn %r9d,%r15d,%r10d
|
|
andn (%rcx),%r15d,%r10d
|
|
|
|
# Test for op r32, r/m32, r32
|
|
bextr %eax,%ebx,%esi
|
|
bextr %ebx,(%rcx),%esi
|
|
bextr %r9d,%r15d,%r10d
|
|
bextr %r9d,(%rcx),%r10d
|
|
|
|
# Test for op r32, r/m32
|
|
tzcnt %eax,%ebx
|
|
tzcnt (%rcx),%ebx
|
|
tzcnt (%rcx),%r15d
|
|
blsi %eax,%ebx
|
|
blsi (%rcx),%ebx
|
|
blsi (%rcx),%r15d
|
|
blsmsk %eax,%ebx
|
|
blsmsk (%rcx),%ebx
|
|
blsmsk (%rcx),%r15d
|
|
blsr %eax,%ebx
|
|
blsr (%rcx),%ebx
|
|
blsr (%rcx),%r15d
|
|
|
|
# Test for op r64, r64, r/m64
|
|
andn %rax,%rbx,%rsi
|
|
andn (%rcx),%rbx,%rsi
|
|
andn %r9,%r15,%r10
|
|
andn (%rcx),%r15,%r10
|
|
|
|
# Test for op r64, r/m64, r64
|
|
bextr %rax,%rbx,%rsi
|
|
bextr %rax,(%rcx),%rsi
|
|
bextr %r9,%r15,%r10
|
|
bextr %r9,(%rcx),%r10
|
|
|
|
# Test for op r64, r/m64
|
|
tzcnt %rax,%rbx
|
|
tzcnt (%rcx),%rbx
|
|
tzcnt %r9,%r15
|
|
tzcnt (%rcx),%r15
|
|
blsi %rax,%rbx
|
|
blsi (%rcx),%rbx
|
|
blsi %r9,%r15
|
|
blsi (%rcx),%r15
|
|
blsmsk %rax,%rbx
|
|
blsmsk (%rcx),%rbx
|
|
blsmsk %r9,%r15
|
|
blsmsk (%rcx),%r15
|
|
blsr %rax,%rbx
|
|
blsr (%rcx),%rbx
|
|
blsr %r9,%r15
|
|
blsr (%rcx),%r15
|
|
|
|
.intel_syntax noprefix
|
|
|
|
# Test for op r16, r/m16
|
|
tzcnt bx,ax
|
|
tzcnt bx,WORD PTR [rcx]
|
|
tzcnt r10w,WORD PTR [rcx]
|
|
tzcnt bx,[rcx]
|
|
|
|
# Test for op r32, r32, r/m32
|
|
andn esi,ebx,eax
|
|
andn esi,ebx,DWORD PTR [rcx]
|
|
andn r15d,r10d,r9d
|
|
andn r15d,r10d,DWORD PTR [rcx]
|
|
andn esi,ebx,[rcx]
|
|
|
|
# Test for op r32, r/m32, r32
|
|
bextr esi,ebx,eax
|
|
bextr esi,DWORD PTR [rcx],ebx
|
|
bextr r15d,r10d,r9d
|
|
bextr r15d,DWORD PTR [rcx],r9d
|
|
bextr esi,[rcx],ebx
|
|
|
|
# Test for op r32, r/m32
|
|
tzcnt ebx,eax
|
|
tzcnt ebx,DWORD PTR [rcx]
|
|
tzcnt r10d,DWORD PTR [rcx]
|
|
tzcnt ebx,[rcx]
|
|
blsi ebx,eax
|
|
blsi ebx,DWORD PTR [rcx]
|
|
blsi r10d,DWORD PTR [rcx]
|
|
blsi ebx,[rcx]
|
|
blsmsk ebx,eax
|
|
blsmsk ebx,DWORD PTR [rcx]
|
|
blsmsk r10d,DWORD PTR [rcx]
|
|
blsmsk ebx,[rcx]
|
|
blsr ebx,eax
|
|
blsr ebx,DWORD PTR [rcx]
|
|
blsr r10d,DWORD PTR [rcx]
|
|
blsr ebx,[rcx]
|
|
|
|
# Test for op r64, r64, r/m64
|
|
andn rsi,rbx,rax
|
|
andn rsi,rbx,QWORD PTR [rcx]
|
|
andn r10,r15,r9
|
|
andn r10,r15,QWORD PTR [rcx]
|
|
andn rsi,rbx,[rcx]
|
|
|
|
# Test for op r64, r/m64, r64
|
|
bextr rsi,rbx,rax
|
|
bextr rsi,QWORD PTR [rcx],rax
|
|
bextr r10,r15,r9
|
|
bextr r10,QWORD PTR [rcx],r9
|
|
bextr rsi,[rcx],rax
|
|
|
|
# Test for op r64, r/m64
|
|
tzcnt rbx,rax
|
|
tzcnt rbx,QWORD PTR [rcx]
|
|
tzcnt r15,r9
|
|
tzcnt r15,QWORD PTR [rcx]
|
|
tzcnt rbx,[rcx]
|
|
blsi rbx,rax
|
|
blsi rbx,QWORD PTR [rcx]
|
|
blsi r15,r9
|
|
blsi r15,QWORD PTR [rcx]
|
|
blsi rbx,[rcx]
|
|
blsmsk rbx,rax
|
|
blsmsk rbx,QWORD PTR [rcx]
|
|
blsmsk r15,r9
|
|
blsmsk r15,QWORD PTR [rcx]
|
|
blsmsk rbx,[rcx]
|
|
blsr rbx,rax
|
|
blsr rbx,QWORD PTR [rcx]
|
|
blsr r15,r9
|
|
blsr r15,QWORD PTR [rcx]
|
|
blsr rbx,[rcx]
|