Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Side by Side Diff: lib/Target/X86/X86MCInstLower.cpp

Issue 1137803004: Add support for using MI bundles as bundle-locked groups on x86 (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: add test Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===-- X86MCInstLower.cpp - Convert X86 MachineInstr to an MCInst --------===// 1 //===-- X86MCInstLower.cpp - Convert X86 MachineInstr to an MCInst --------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This file contains code to lower X86 MachineInstrs to their corresponding 10 // This file contains code to lower X86 MachineInstrs to their corresponding
(...skipping 989 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 CS << "]"; 1000 CS << "]";
1001 CS.flush(); 1001 CS.flush();
1002 1002
1003 return Comment; 1003 return Comment;
1004 } 1004 }
1005 1005
1006 void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { 1006 void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) {
1007 X86MCInstLower MCInstLowering(*MF, *this); 1007 X86MCInstLower MCInstLowering(*MF, *this);
1008 const X86RegisterInfo *RI = MF->getSubtarget<X86Subtarget>().getRegisterInfo() ; 1008 const X86RegisterInfo *RI = MF->getSubtarget<X86Subtarget>().getRegisterInfo() ;
1009 1009
1010 // @LOCALMOD-START
1011 // MI Bundles are used to represent bundle-locked groups.
1012 // MBB iterators skip bundles, so when we reach a bundle head, unpack it here.
1013 if (MI->isBundle()) {
1014 MachineBasicBlock::const_iterator MBBI(MI);
1015 MachineBasicBlock::const_instr_iterator MII (MBBI.getInstrIterator());
1016 MBBI++;
jvoung (off chromium) 2015/05/12 23:53:04 ++MBBI instead?
Derek Schuff 2015/05/13 00:44:50 Done.
1017 OutStreamer.EmitBundleLock(false);
1018 while (++MII != MBBI) {
1019 EmitInstruction(MII);
1020 }
1021 OutStreamer.EmitBundleUnlock();
1022 return;
1023 }
1024 // @LOCALMOD-END
1025
1010 switch (MI->getOpcode()) { 1026 switch (MI->getOpcode()) {
1011 case TargetOpcode::DBG_VALUE: 1027 case TargetOpcode::DBG_VALUE:
1012 llvm_unreachable("Should be handled target independently"); 1028 llvm_unreachable("Should be handled target independently");
1013 1029
1014 // Emit nothing here but a comment if we can. 1030 // Emit nothing here but a comment if we can.
1015 case X86::Int_MemBarrier: 1031 case X86::Int_MemBarrier:
1016 OutStreamer.emitRawComment("MEMBARRIER"); 1032 OutStreamer.emitRawComment("MEMBARRIER");
1017 return; 1033 return;
1018 1034
1019 1035
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 // Then flush the shadow so that we fill with nops before the call, not 1331 // Then flush the shadow so that we fill with nops before the call, not
1316 // after it. 1332 // after it.
1317 SMShadowTracker.emitShadowPadding(OutStreamer, getSubtargetInfo()); 1333 SMShadowTracker.emitShadowPadding(OutStreamer, getSubtargetInfo());
1318 // Then emit the call 1334 // Then emit the call
1319 OutStreamer.EmitInstruction(TmpInst, getSubtargetInfo()); 1335 OutStreamer.EmitInstruction(TmpInst, getSubtargetInfo());
1320 return; 1336 return;
1321 } 1337 }
1322 1338
1323 EmitAndCountInstruction(TmpInst); 1339 EmitAndCountInstruction(TmpInst);
1324 } 1340 }
OLDNEW
« no previous file with comments | « no previous file | lib/Target/X86/X86NaClRewritePass.cpp » ('j') | lib/Target/X86/X86NaClRewritePass.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698