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

Side by Side Diff: src/IceAssemblerARM32.cpp

Issue 1655363002: Add vector VEOR instruction to the integrated ARM assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Add DART file. Created 4 years, 10 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.h ('k') | src/IceInstARM32.cpp » ('j') | 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/IceAssemblerARM32.cpp - Assembler for ARM32 --*- C++ -*-===// 1 //===- subzero/src/IceAssemblerARM32.cpp - Assembler for ARM32 --*- C++ -*-===//
2 // 2 //
3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
4 // for details. All rights reserved. Use of this source code is governed by a 4 // for details. All rights reserved. Use of this source code is governed by a
5 // BSD-style license that can be found in the LICENSE file. 5 // BSD-style license that can be found in the LICENSE file.
6 // 6 //
7 // Modified by the Subzero authors. 7 // Modified by the Subzero authors.
8 // 8 //
9 //===----------------------------------------------------------------------===// 9 //===----------------------------------------------------------------------===//
10 // 10 //
(...skipping 2453 matching lines...) Expand 10 before | Expand all | Expand 10 after
2464 IValueT Dm = encodeDRegister(OpDm, "Dm", Veord); 2464 IValueT Dm = encodeDRegister(OpDm, "Dm", Veord);
2465 const IValueT Encoding = 2465 const IValueT Encoding =
2466 B25 | B24 | B8 | B4 | 2466 B25 | B24 | B8 | B4 |
2467 (encodeCondition(CondARM32::Cond::kNone) << kConditionShift) | 2467 (encodeCondition(CondARM32::Cond::kNone) << kConditionShift) |
2468 (getYInRegYXXXX(Dd) << 22) | (getXXXXInRegYXXXX(Dn) << 16) | 2468 (getYInRegYXXXX(Dd) << 22) | (getXXXXInRegYXXXX(Dn) << 16) |
2469 (getXXXXInRegYXXXX(Dd) << 12) | (getYInRegYXXXX(Dn) << 7) | 2469 (getXXXXInRegYXXXX(Dd) << 12) | (getYInRegYXXXX(Dn) << 7) |
2470 (getYInRegYXXXX(Dm) << 5) | getXXXXInRegYXXXX(Dm); 2470 (getYInRegYXXXX(Dm) << 5) | getXXXXInRegYXXXX(Dm);
2471 emitInst(Encoding); 2471 emitInst(Encoding);
2472 } 2472 }
2473 2473
2474 void AssemblerARM32::veorq(const Operand *OpQd, const Operand *OpQn,
2475 const Operand *OpQm) {
2476 constexpr const char *Veorq = "veorq";
2477 constexpr IValueT VeorqOpcode = B24 | B8 | B4;
2478 emitSIMDqqq(VeorqOpcode, IceType_i8, OpQd, OpQn, OpQm, Veorq);
2479 }
2480
2474 void AssemblerARM32::vldrd(const Operand *OpDd, const Operand *OpAddress, 2481 void AssemblerARM32::vldrd(const Operand *OpDd, const Operand *OpAddress,
2475 CondARM32::Cond Cond, const TargetInfo &TInfo) { 2482 CondARM32::Cond Cond, const TargetInfo &TInfo) {
2476 // VLDR - ARM section A8.8.333, encoding A1. 2483 // VLDR - ARM section A8.8.333, encoding A1.
2477 // vldr<c> <Dd>, [<Rn>{, #+/-<imm>}] 2484 // vldr<c> <Dd>, [<Rn>{, #+/-<imm>}]
2478 // 2485 //
2479 // cccc1101UD01nnnndddd1011iiiiiiii where cccc=Cond, nnnn=Rn, Ddddd=Rd, 2486 // cccc1101UD01nnnndddd1011iiiiiiii where cccc=Cond, nnnn=Rn, Ddddd=Rd,
2480 // iiiiiiii=abs(Imm >> 2), and U=1 if Opcode>=0. 2487 // iiiiiiii=abs(Imm >> 2), and U=1 if Opcode>=0.
2481 constexpr const char *Vldrd = "vldrd"; 2488 constexpr const char *Vldrd = "vldrd";
2482 IValueT Dd = encodeDRegister(OpDd, "Dd", Vldrd); 2489 IValueT Dd = encodeDRegister(OpDd, "Dd", Vldrd);
2483 assert(CondARM32::isDefined(Cond)); 2490 assert(CondARM32::isDefined(Cond));
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
2921 constexpr const char *Vsqrts = "vsqrts"; 2928 constexpr const char *Vsqrts = "vsqrts";
2922 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts); 2929 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts);
2923 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts); 2930 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts);
2924 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6; 2931 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6;
2925 constexpr IValueT S0 = 0; 2932 constexpr IValueT S0 = 0;
2926 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm); 2933 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm);
2927 } 2934 }
2928 2935
2929 } // end of namespace ARM32 2936 } // end of namespace ARM32
2930 } // end of namespace Ice 2937 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceAssemblerARM32.h ('k') | src/IceInstARM32.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698