[PATCH] D135951: [X86][WIP] SUPPORT RAO-INT
pengfei updated this revision to Diff 468020. pengfei added a comment. Add atomic operations lowering for RAO-INT instructions. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135951/new/ https://reviews.llvm.org/D135951 Files: clang/docs/ReleaseNotes.rst clang/include/clang/Driver/Options.td clang/lib/Basic/Targets/X86.cpp clang/lib/Basic/Targets/X86.h clang/lib/Headers/cpuid.h clang/test/Driver/x86-target-features.c clang/test/Preprocessor/x86_target_features.c llvm/include/llvm/Support/X86TargetParser.def llvm/lib/Support/Host.cpp llvm/lib/Support/X86TargetParser.cpp llvm/lib/Target/X86/X86.td llvm/lib/Target/X86/X86ISelLowering.cpp llvm/lib/Target/X86/X86ISelLowering.h llvm/lib/Target/X86/X86InstrInfo.td llvm/lib/Target/X86/X86InstrRAOINT.td llvm/test/CodeGen/X86/atomic-instructions-32.ll llvm/test/CodeGen/X86/atomic-instructions-64.ll llvm/test/MC/Disassembler/X86/rao-int.txt llvm/test/MC/Disassembler/X86/x86-64-rao-int.txt llvm/test/MC/X86/rao-int-att.s llvm/test/MC/X86/rao-int-intel.s llvm/test/MC/X86/x86-64-rao-int-att.s llvm/test/MC/X86/x86-64-rao-int-intel.s Index: llvm/test/MC/X86/x86-64-rao-int-intel.s === --- /dev/null +++ llvm/test/MC/X86/x86-64-rao-int-intel.s @@ -0,0 +1,193 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s + +// CHECK: aadd qword ptr [rbp + 8*r14 + 268435456], r9 +// CHECK: encoding: [0x4e,0x0f,0x38,0xfc,0x8c,0xf5,0x00,0x00,0x00,0x10] + aadd qword ptr [rbp + 8*r14 + 268435456], r9 + +// CHECK: aadd qword ptr [r8 + 4*rax + 291], r9 +// CHECK: encoding: [0x4d,0x0f,0x38,0xfc,0x8c,0x80,0x23,0x01,0x00,0x00] + aadd qword ptr [r8 + 4*rax + 291], r9 + +// CHECK: aadd qword ptr [rip], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x0d,0x00,0x00,0x00,0x00] + aadd qword ptr [rip], r9 + +// CHECK: aadd qword ptr [2*rbp - 512], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x0c,0x6d,0x00,0xfe,0xff,0xff] + aadd qword ptr [2*rbp - 512], r9 + +// CHECK: aadd qword ptr [rcx + 2032], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x89,0xf0,0x07,0x00,0x00] + aadd qword ptr [rcx + 2032], r9 + +// CHECK: aadd qword ptr [rdx - 2048], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x8a,0x00,0xf8,0xff,0xff] + aadd qword ptr [rdx - 2048], r9 + +// CHECK: aadd dword ptr [esp + 8*esi + 268435456], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x9c,0xf4,0x00,0x00,0x00,0x10] + aadd dword ptr [esp + 8*esi + 268435456], ebx + +// CHECK: aadd dword ptr [edi + 4*eax + 291], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x9c,0x87,0x23,0x01,0x00,0x00] + aadd dword ptr [edi + 4*eax + 291], ebx + +// CHECK: aadd dword ptr [eax], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x18] + aadd dword ptr [eax], ebx + +// CHECK: aadd dword ptr [2*ebp - 512], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x1c,0x6d,0x00,0xfe,0xff,0xff] + aadd dword ptr [2*ebp - 512], ebx + +// CHECK: aadd dword ptr [ecx + 2032], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x99,0xf0,0x07,0x00,0x00] + aadd dword ptr [ecx + 2032], ebx + +// CHECK: aadd dword ptr [edx - 2048], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x9a,0x00,0xf8,0xff,0xff] + aadd dword ptr [edx - 2048], ebx + +// CHECK: aand qword ptr [rbp + 8*r14 + 268435456], r9 +// CHECK: encoding: [0x66,0x4e,0x0f,0x38,0xfc,0x8c,0xf5,0x00,0x00,0x00,0x10] + aand qword ptr [rbp + 8*r14 + 268435456], r9 + +// CHECK: aand qword ptr [r8 + 4*rax + 291], r9 +// CHECK: encoding: [0x66,0x4d,0x0f,0x38,0xfc,0x8c,0x80,0x23,0x01,0x00,0x00] + aand qword ptr [r8 + 4*rax + 291], r9 + +// CHECK: aand qword ptr [rip], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x0d,0x00,0x00,0x00,0x00] + aand qword ptr [rip], r9 + +// CHECK: aand qword ptr [2*rbp - 512], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x0c,0x6d,0x00,0xfe,0xff,0xff] + aand qword ptr [2*rbp - 512], r9 + +// CHECK: aand qword ptr [rcx + 2032], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x89,0xf0,0x07,0x00,0x00] + aand qword ptr [rcx + 2032], r9 + +// CHECK: aand qword ptr [rdx - 2048], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x8a,0x00,0xf8,0xff,0xff] + aand qword ptr [rdx - 2048], r9 + +// CHECK: aand dword ptr [esp + 8*esi + 268435456], ebx +// CHECK: encoding: [0x67,0x66,0x0f,0x38,0xfc,0x9c,0xf4,0x00,0x00,0x00,0x10] + aand dword ptr [esp + 8*esi + 268435456], ebx + +// CHECK: aand dword ptr [edi + 4*eax + 291], ebx +// CHECK: encoding: [0x67,0x66,0x0f,0x38,0xfc,0x9c,0x87,0x23,0x01,0x00,0x00] + aand
[PATCH] D135951: [X86][WIP] SUPPORT RAO-INT
pengfei created this revision. Herald added a subscriber: hiraditya. Herald added a project: All. pengfei requested review of this revision. Herald added projects: clang, LLVM. Herald added subscribers: llvm-commits, cfe-commits. For more details about these instructions, please refer to the latest ISE document: https://www.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D135951 Files: clang/docs/ReleaseNotes.rst clang/include/clang/Driver/Options.td clang/lib/Basic/Targets/X86.cpp clang/lib/Basic/Targets/X86.h clang/lib/Headers/cpuid.h clang/test/Driver/x86-target-features.c clang/test/Preprocessor/x86_target_features.c llvm/include/llvm/Support/X86TargetParser.def llvm/lib/Support/Host.cpp llvm/lib/Support/X86TargetParser.cpp llvm/lib/Target/X86/X86.td llvm/lib/Target/X86/X86InstrInfo.td llvm/lib/Target/X86/X86InstrRAOINT.td llvm/test/MC/Disassembler/X86/rao-int.txt llvm/test/MC/Disassembler/X86/x86-64-rao-int.txt llvm/test/MC/X86/rao-int-att.s llvm/test/MC/X86/rao-int-intel.s llvm/test/MC/X86/x86-64-rao-int-att.s llvm/test/MC/X86/x86-64-rao-int-intel.s Index: llvm/test/MC/X86/x86-64-rao-int-intel.s === --- /dev/null +++ llvm/test/MC/X86/x86-64-rao-int-intel.s @@ -0,0 +1,193 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s + +// CHECK: aadd qword ptr [rbp + 8*r14 + 268435456], r9 +// CHECK: encoding: [0x4e,0x0f,0x38,0xfc,0x8c,0xf5,0x00,0x00,0x00,0x10] + aadd qword ptr [rbp + 8*r14 + 268435456], r9 + +// CHECK: aadd qword ptr [r8 + 4*rax + 291], r9 +// CHECK: encoding: [0x4d,0x0f,0x38,0xfc,0x8c,0x80,0x23,0x01,0x00,0x00] + aadd qword ptr [r8 + 4*rax + 291], r9 + +// CHECK: aadd qword ptr [rip], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x0d,0x00,0x00,0x00,0x00] + aadd qword ptr [rip], r9 + +// CHECK: aadd qword ptr [2*rbp - 512], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x0c,0x6d,0x00,0xfe,0xff,0xff] + aadd qword ptr [2*rbp - 512], r9 + +// CHECK: aadd qword ptr [rcx + 2032], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x89,0xf0,0x07,0x00,0x00] + aadd qword ptr [rcx + 2032], r9 + +// CHECK: aadd qword ptr [rdx - 2048], r9 +// CHECK: encoding: [0x4c,0x0f,0x38,0xfc,0x8a,0x00,0xf8,0xff,0xff] + aadd qword ptr [rdx - 2048], r9 + +// CHECK: aadd dword ptr [esp + 8*esi + 268435456], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x9c,0xf4,0x00,0x00,0x00,0x10] + aadd dword ptr [esp + 8*esi + 268435456], ebx + +// CHECK: aadd dword ptr [edi + 4*eax + 291], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x9c,0x87,0x23,0x01,0x00,0x00] + aadd dword ptr [edi + 4*eax + 291], ebx + +// CHECK: aadd dword ptr [eax], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x18] + aadd dword ptr [eax], ebx + +// CHECK: aadd dword ptr [2*ebp - 512], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x1c,0x6d,0x00,0xfe,0xff,0xff] + aadd dword ptr [2*ebp - 512], ebx + +// CHECK: aadd dword ptr [ecx + 2032], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x99,0xf0,0x07,0x00,0x00] + aadd dword ptr [ecx + 2032], ebx + +// CHECK: aadd dword ptr [edx - 2048], ebx +// CHECK: encoding: [0x67,0x0f,0x38,0xfc,0x9a,0x00,0xf8,0xff,0xff] + aadd dword ptr [edx - 2048], ebx + +// CHECK: aand qword ptr [rbp + 8*r14 + 268435456], r9 +// CHECK: encoding: [0x66,0x4e,0x0f,0x38,0xfc,0x8c,0xf5,0x00,0x00,0x00,0x10] + aand qword ptr [rbp + 8*r14 + 268435456], r9 + +// CHECK: aand qword ptr [r8 + 4*rax + 291], r9 +// CHECK: encoding: [0x66,0x4d,0x0f,0x38,0xfc,0x8c,0x80,0x23,0x01,0x00,0x00] + aand qword ptr [r8 + 4*rax + 291], r9 + +// CHECK: aand qword ptr [rip], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x0d,0x00,0x00,0x00,0x00] + aand qword ptr [rip], r9 + +// CHECK: aand qword ptr [2*rbp - 512], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x0c,0x6d,0x00,0xfe,0xff,0xff] + aand qword ptr [2*rbp - 512], r9 + +// CHECK: aand qword ptr [rcx + 2032], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x89,0xf0,0x07,0x00,0x00] + aand qword ptr [rcx + 2032], r9 + +// CHECK: aand qword ptr [rdx - 2048], r9 +// CHECK: encoding: [0x66,0x4c,0x0f,0x38,0xfc,0x8a,0x00,0xf8,0xff,0xff] + aand qword ptr [rdx - 2048], r9 + +// CHECK: aand dword ptr [esp + 8*esi + 268435456], ebx +// CHECK: encoding: [0x67,0x66,0x0f,0x38,0xfc,0x9c,0xf4,0x00,0x00,0x00,0x10] + aand dword ptr [esp + 8*esi + 268435456], ebx + +// CHECK: aand dword ptr [edi + 4*eax + 291], ebx +// CHECK: encoding: