[llvm] r244806 - MIR Serialization: Serialize the stack pseudo source values.

Alex Lorenz via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 12 13:44:16 PDT 2015


Author: arphaman
Date: Wed Aug 12 15:44:16 2015
New Revision: 244806

URL: http://llvm.org/viewvc/llvm-project?rev=244806&view=rev
Log:
MIR Serialization: Serialize the stack pseudo source values.

Modified:
    llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp
    llvm/trunk/lib/CodeGen/MIRParser/MILexer.h
    llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp
    llvm/trunk/lib/CodeGen/MIRPrinter.cpp
    llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir

Modified: llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp?rev=244806&r1=244805&r2=244806&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp Wed Aug 12 15:44:16 2015
@@ -201,6 +201,7 @@ static MIToken::TokenKind getIdentifierK
       .Case("non-temporal", MIToken::kw_non_temporal)
       .Case("invariant", MIToken::kw_invariant)
       .Case("align", MIToken::kw_align)
+      .Case("stack", MIToken::kw_stack)
       .Case("constant-pool", MIToken::kw_constant_pool)
       .Case("liveout", MIToken::kw_liveout)
       .Default(MIToken::Identifier);

Modified: llvm/trunk/lib/CodeGen/MIRParser/MILexer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRParser/MILexer.h?rev=244806&r1=244805&r2=244806&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRParser/MILexer.h (original)
+++ llvm/trunk/lib/CodeGen/MIRParser/MILexer.h Wed Aug 12 15:44:16 2015
@@ -70,6 +70,7 @@ struct MIToken {
     kw_non_temporal,
     kw_invariant,
     kw_align,
+    kw_stack,
     kw_constant_pool,
     kw_liveout,
 

Modified: llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp?rev=244806&r1=244805&r2=244806&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp Wed Aug 12 15:44:16 2015
@@ -1121,6 +1121,9 @@ bool MIParser::parseMemoryOperandFlag(un
 
 bool MIParser::parseMemoryPseudoSourceValue(const PseudoSourceValue *&PSV) {
   switch (Token.kind()) {
+  case MIToken::kw_stack:
+    PSV = MF.getPSVManager().getStack();
+    break;
   case MIToken::kw_constant_pool:
     PSV = MF.getPSVManager().getConstantPool();
     break;
@@ -1133,7 +1136,7 @@ bool MIParser::parseMemoryPseudoSourceVa
 }
 
 bool MIParser::parseMachinePointerInfo(MachinePointerInfo &Dest) {
-  if (Token.is(MIToken::kw_constant_pool)) {
+  if (Token.is(MIToken::kw_constant_pool) || Token.is(MIToken::kw_stack)) {
     const PseudoSourceValue *PSV = nullptr;
     if (parseMemoryPseudoSourceValue(PSV))
       return true;

Modified: llvm/trunk/lib/CodeGen/MIRPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRPrinter.cpp?rev=244806&r1=244805&r2=244806&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRPrinter.cpp Wed Aug 12 15:44:16 2015
@@ -710,6 +710,9 @@ void MIPrinter::print(const MachineMemOp
     const PseudoSourceValue *PVal = Op.getPseudoValue();
     assert(PVal && "Expected a pseudo source value");
     switch (PVal->kind()) {
+    case PseudoSourceValue::Stack:
+      OS << "stack";
+      break;
     case PseudoSourceValue::ConstantPool:
       OS << "constant-pool";
       break;

Modified: llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir?rev=244806&r1=244805&r2=244806&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir (original)
+++ llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir Wed Aug 12 15:44:16 2015
@@ -65,6 +65,16 @@
     ret double %b
   }
 
+  declare x86_fp80 @cosl(x86_fp80) #0
+
+  define x86_fp80 @stack_psv(x86_fp80 %x) {
+  entry:
+    %y = call x86_fp80 @cosl(x86_fp80 %x) #0
+    ret x86_fp80 %y
+  }
+
+  attributes #0 = { readonly }
+
 ...
 ---
 name:            test
@@ -211,3 +221,28 @@ body:
       - '%xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.0, _ :: (load 8 from constant-pool + 8)'
       - 'RETQ %xmm0'
 ...
+---
+name:            stack_psv
+tracksRegLiveness: true
+frameInfo:
+  stackSize:       24
+  maxAlignment:    16
+  adjustsStack:    true
+  hasCalls:        true
+  maxCallFrameSize: 16
+fixedStack:
+  - { id: 0, offset: 0, size: 10, alignment: 16, isImmutable: true, isAliased: false }
+body:
+  - id:          0
+    name:        entry
+    instructions:
+      - '%rsp = frame-setup SUB64ri8 %rsp, 24, implicit-def dead %eflags'
+      - CFI_INSTRUCTION .cfi_def_cfa_offset 32
+      - 'LD_F80m %rsp, 1, _, 32, _, implicit-def dead %fpsw'
+# CHECK: name: stack_psv
+# CHECK: ST_FP80m %rsp, 1, _, 0, _, implicit-def dead %fpsw :: (store 10 into stack, align 16)
+      - 'ST_FP80m %rsp, 1, _, 0, _, implicit-def dead %fpsw :: (store 10 into stack, align 16)'
+      - 'CALL64pcrel32 $cosl, csr_64, implicit %rsp, implicit-def %rsp, implicit-def %fp0'
+      - '%rsp = ADD64ri8 %rsp, 24, implicit-def dead %eflags'
+      - RETQ
+...




More information about the llvm-commits mailing list