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
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
| clang/test/CodeGen/X86/cmpccxadd-builtins-error.c | ||
|---|---|---|
| 3 | Add 32-bit test coverage to ensure the intrinsics aren't visible? | |
| llvm/CMakeLists.txt | ||
|---|---|---|
| 887 ↗ | (On Diff #467668) | What is this for? |
| clang/include/clang/Basic/BuiltinsX86_64.def | ||
|---|---|---|
| 138 | There was a blank line here. Put it back. | |
| clang/lib/Basic/Targets/X86.cpp | ||
| 781 | What is CMPCCXADD_SUPPORTED for? | |
| llvm/lib/Target/X86/X86.td | ||
| 259 | Why AVX2? | |
| llvm/lib/Target/X86/X86InstrSSE.td | ||
| 8118 | This feels like it belongs somewhere other than X86InstrSSE.td since it's not vector related. | |
| 8131 | Any possibility of doing this like how JCC_1, SETCCr, and CMOV32rr using an immediate for the lower 4 bits of the opcode? | |
| 8145–8146 | Should there be aliases for consistency with Jcc, Setcc, and cmovcc. To support A, AE, GT, GE etc.? | |
| llvm/lib/Target/X86/X86InstrSSE.td | ||
|---|---|---|
| 8118 | Missing Defs = [EFLAGS] I think | |
| llvm/test/MC/X86/x86-64-cmpccxadd-att.s | ||
|---|---|---|
| 1 | Drop the -att.s and add intel test coverage? | |
| clang/lib/Basic/Targets/X86.cpp | ||
|---|---|---|
| 971 | This list is alphabetized or was supposed to be | |
| 1001 | This list is alphabetized | |
| llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h | ||
| 1072 | This comment is out of date. | |
| llvm/lib/Target/X86/X86ISelLowering.cpp | ||
| 5631 ↗ | (On Diff #469456) | Probably need MOVolatile too |
| llvm/lib/Target/X86/X86InstrCompiler.td | ||
| 1026 ↗ | (On Diff #469456) | X86InstrCompiler.td is for pseudos and isCodeGenOnly=1 instructions. Basically things only needed by CodeGen and not the assembler/disassembler. |
| llvm/utils/TableGen/X86RecognizableInstr.cpp | ||
| 873 | Extra space after MRMDestMem4VOp3CC | |
| llvm/lib/Target/X86/X86InstrCompiler.td | ||
|---|---|---|
| 1026 ↗ | (On Diff #469456) | I was to make it near "cmpxchg". What about llvm/lib/Target/X86/X86InstrInfo.td? |
| llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h | ||
|---|---|---|
| 1072 | I'd prefer if you fixed the comment rather than deleting it. | |
| llvm/lib/Target/X86/X86InstrInfo.td | ||
| 3009 | Can we put $dstsrc2 before $dstsrc1 in the ins list? That would remove the need for the change in getOperandBias I think. But maybe it complicates the encoder and disassembler? | |
| llvm/lib/Target/X86/X86InstrSSE.td | ||
| 8117 | Looks like there's a blank line being deleted here? | |
| llvm/lib/Target/X86/X86ISelLowering.cpp | ||
|---|---|---|
| 5643–5653 ↗ | (On Diff #469470) | This can be merged with above. |
| llvm/lib/Target/X86/X86InstrInfo.td | ||
|---|---|---|
| 3010 | +1 for craig. Usually if the input is tied to ouput, it should be the 1st input. These two instructions use a new Format MRMDestMem4VOp3CC rather than an existing one, I belive it won't increase the complexity. | |
| clang/test/Driver/x86-target-features.c | ||
|---|---|---|
| 308 | Use -target=xxx -march=xxx to match with others. xxx can be x86_64 I think. | |
| 309 | ditto. | |
| llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h | ||
| 1074 | Unrelated change. | |
| 1129 | Maybe move it to line 1133? MRMDestMem4VOp3CC is used for VEX encoding only. | |
| llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | ||
| 816 | Also this is not needed. | |
| 820 | ditto. | |
| llvm/lib/Target/X86/X86ISelLowering.cpp | ||
| 34174 ↗ | (On Diff #469979) | ditto. |
| llvm/lib/Target/X86/X86ISelLowering.h | ||
| 872 ↗ | (On Diff #469979) | Add comments for them? |
| 873 ↗ | (On Diff #469979) | This node seems not used. |
| llvm/lib/Target/X86/X86InstrInfo.td | ||
| 344 | Change to CMPCCXADD since it's shared. | |
| llvm/lib/Target/X86/X86InstrInfo.td | ||
|---|---|---|
| 3017 | set GR64:$dst, EFLAGS ...? | |
| clang/lib/Headers/cmpccxaddintrin.h | ||
|---|---|---|
| 20–35 | Could you use the same suffix for the condition code as ./llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h? e.g NB->AE Z->E NZ->NE NBE->A and so on. | |
| llvm/lib/Target/X86/MCTargetDesc/X86InstPrinterCommon.cpp | ||
|---|---|---|
| 32 ↗ | (On Diff #470079) | Capitalize 1st char |
| llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | ||
| 1455–1457 | Minor suggestion emitMemModRMByte(MI, ++CurOp, getX86RegNum(MI.getOperand(0)), TSFlags,
HasREX, StartByte, OS, Fixups, STI, false);
CurOp = SrcRegNum + 2; // skip VEX_V4 and CCwould be more clear b/c you use "skip VEX_V4 and CC" in the comments. | |
There was a blank line here. Put it back.