| # Check 32bit BMI2 instructions |
| |
| .allow_index_reg |
| .text |
| _start: |
| |
| # Test for op r32, r/m32, imm8 |
| rorx $7,%eax,%ebx |
| rorx $7,(%ecx),%ebx |
| |
| # Test for op r32, r32, r/m32 |
| mulx %eax,%ebx,%esi |
| mulx (%ecx),%ebx,%esi |
| pdep %eax,%ebx,%esi |
| pdep (%ecx),%ebx,%esi |
| pext %eax,%ebx,%esi |
| pext (%ecx),%ebx,%esi |
| |
| # Test for op r32, r/m32, r32 |
| bzhi %eax,%ebx,%esi |
| bzhi %ebx,(%ecx),%esi |
| sarx %eax,%ebx,%esi |
| sarx %ebx,(%ecx),%esi |
| shlx %eax,%ebx,%esi |
| shlx %ebx,(%ecx),%esi |
| shrx %eax,%ebx,%esi |
| shrx %ebx,(%ecx),%esi |
| |
| .intel_syntax noprefix |
| |
| # Test for op r32, r/m32, imm8 |
| rorx ebx,eax,7 |
| rorx ebx,DWORD PTR [ecx],7 |
| rorx ebx,[ecx],7 |
| |
| # Test for op r32, r32, r/m32 |
| mulx esi,ebx,eax |
| mulx esi,ebx,DWORD PTR [ecx] |
| mulx esi,ebx,[ecx] |
| pdep esi,ebx,eax |
| pdep esi,ebx,DWORD PTR [ecx] |
| pdep esi,ebx,[ecx] |
| pext esi,ebx,eax |
| pext esi,ebx,DWORD PTR [ecx] |
| pext esi,ebx,[ecx] |
| |
| # Test for op r32, r/m32, r32 |
| bzhi esi,ebx,eax |
| bzhi esi,DWORD PTR [ecx],ebx |
| bzhi esi,[ecx],ebx |
| sarx esi,ebx,eax |
| sarx esi,DWORD PTR [ecx],ebx |
| sarx esi,[ecx],ebx |
| shlx esi,ebx,eax |
| shlx esi,DWORD PTR [ecx],ebx |
| shlx esi,[ecx],ebx |
| shrx esi,ebx,eax |
| shrx esi,DWORD PTR [ecx],ebx |
| shrx esi,[ecx],ebx |