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

Side by Side Diff: src/IceInstARM32.cpp

Issue 1879463003: Add "vmov.<dt> <Qd>, #<imm>" to integrated ARM assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 4 years, 8 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
« no previous file with comments | « src/IceAssemblerARM32.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceInstARM32.cpp - ARM32 instruction implementation ----===// 1 //===- subzero/src/IceInstARM32.cpp - ARM32 instruction implementation ----===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
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 /// \file 10 /// \file
(...skipping 1558 matching lines...) Expand 10 before | Expand all | Expand 10 after
1569 } 1569 }
1570 break; // Error 1570 break; // Error
1571 case IceType_v4i1: 1571 case IceType_v4i1:
1572 case IceType_v8i1: 1572 case IceType_v8i1:
1573 case IceType_v16i1: 1573 case IceType_v16i1:
1574 case IceType_v16i8: 1574 case IceType_v16i8:
1575 case IceType_v8i16: 1575 case IceType_v8i16:
1576 case IceType_v4i32: 1576 case IceType_v4i32:
1577 case IceType_v4f32: 1577 case IceType_v4f32:
1578 assert(CondARM32::isUnconditional(Cond) && 1578 assert(CondARM32::isUnconditional(Cond) &&
1579 "Moves on <4 x f32> must be unconditional!"); 1579 "Moves on vector must be unconditional!");
1580 // Mov between different Src and Dest types is used for bitcasting vectors. 1580 if (isVectorType(SrcTy)) {
1581 // We still want to make sure SrcTy is a vector type. 1581 // Mov between different Src and Dest types is used for bitcasting
1582 assert(isVectorType(SrcTy) && "Mov between vector and scalar."); 1582 // vectors. We still want to make sure SrcTy is a vector type.
1583 Asm->vorrq(Dest, Src0, Src0); 1583 Asm->vorrq(Dest, Src0, Src0);
1584 return; 1584 return;
1585 } else if (const auto *C = llvm::dyn_cast<ConstantInteger32>(Src0)) {
1586 // Mov with constant argument, allowing the initializing all elements of
1587 // the vector.
1588 if (Asm->vmovqc(Dest, C))
1589 return;
1590 }
1585 } 1591 }
1586 llvm::report_fatal_error("Mov: don't know how to move " + 1592 llvm::report_fatal_error("Mov: don't know how to move " +
1587 typeStdString(SrcTy) + " to " + 1593 typeStdString(SrcTy) + " to " +
1588 typeStdString(DestTy)); 1594 typeStdString(DestTy));
1589 } 1595 }
1590 1596
1591 void InstARM32Mov::dump(const Cfg *Func) const { 1597 void InstARM32Mov::dump(const Cfg *Func) const {
1592 if (!BuildDefs::dump()) 1598 if (!BuildDefs::dump())
1593 return; 1599 return;
1594 assert(getSrcSize() == 1 || getSrcSize() == 2); 1600 assert(getSrcSize() == 1 || getSrcSize() == 2);
(...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2787 2793
2788 template class InstARM32FourAddrGPR<InstARM32::Mla>; 2794 template class InstARM32FourAddrGPR<InstARM32::Mla>;
2789 template class InstARM32FourAddrGPR<InstARM32::Mls>; 2795 template class InstARM32FourAddrGPR<InstARM32::Mls>;
2790 2796
2791 template class InstARM32CmpLike<InstARM32::Cmn>; 2797 template class InstARM32CmpLike<InstARM32::Cmn>;
2792 template class InstARM32CmpLike<InstARM32::Cmp>; 2798 template class InstARM32CmpLike<InstARM32::Cmp>;
2793 template class InstARM32CmpLike<InstARM32::Tst>; 2799 template class InstARM32CmpLike<InstARM32::Tst>;
2794 2800
2795 } // end of namespace ARM32 2801 } // end of namespace ARM32
2796 } // end of namespace Ice 2802 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceAssemblerARM32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698