OLD | NEW |
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 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 } | 484 } |
485 | 485 |
486 if (Src64 == nullptr) { | 486 if (Src64 == nullptr) { |
487 addSource(Src); | 487 addSource(Src); |
488 } else { | 488 } else { |
489 addSource(Src64->getLo()); | 489 addSource(Src64->getLo()); |
490 addSource(Src64->getHi()); | 490 addSource(Src64->getHi()); |
491 } | 491 } |
492 } | 492 } |
493 | 493 |
| 494 template <InstARM32::InstKindARM32 K> |
| 495 void InstARM32CmpLike<K>::emitIAS(const Cfg *Func) const { |
| 496 emitUsingTextFixup(Func); |
| 497 } |
| 498 |
| 499 template <> void InstARM32Cmp::emitIAS(const Cfg *Func) const { |
| 500 assert(getSrcSize() == 2); |
| 501 ARM32::AssemblerARM32 *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
| 502 Asm->cmp(getSrc(0), getSrc(1), getPredicate()); |
| 503 if (Asm->needsTextFixup()) |
| 504 emitUsingTextFixup(Func); |
| 505 } |
| 506 |
494 InstARM32Vcmp::InstARM32Vcmp(Cfg *Func, Variable *Src0, Variable *Src1, | 507 InstARM32Vcmp::InstARM32Vcmp(Cfg *Func, Variable *Src0, Variable *Src1, |
495 CondARM32::Cond Predicate) | 508 CondARM32::Cond Predicate) |
496 : InstARM32Pred(Func, InstARM32::Vcmp, 2, nullptr, Predicate) { | 509 : InstARM32Pred(Func, InstARM32::Vcmp, 2, nullptr, Predicate) { |
497 addSource(Src0); | 510 addSource(Src0); |
498 addSource(Src1); | 511 addSource(Src1); |
499 } | 512 } |
500 | 513 |
501 InstARM32Vmrs::InstARM32Vmrs(Cfg *Func, CondARM32::Cond Predicate) | 514 InstARM32Vmrs::InstARM32Vmrs(Cfg *Func, CondARM32::Cond Predicate) |
502 : InstARM32Pred(Func, InstARM32::Vmrs, 0, nullptr, Predicate) {} | 515 : InstARM32Pred(Func, InstARM32::Vmrs, 0, nullptr, Predicate) {} |
503 | 516 |
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1544 | 1557 |
1545 template class InstARM32UnaryopGPR<InstARM32::Movw, false>; | 1558 template class InstARM32UnaryopGPR<InstARM32::Movw, false>; |
1546 template class InstARM32UnaryopGPR<InstARM32::Clz, false>; | 1559 template class InstARM32UnaryopGPR<InstARM32::Clz, false>; |
1547 template class InstARM32UnaryopGPR<InstARM32::Mvn, false>; | 1560 template class InstARM32UnaryopGPR<InstARM32::Mvn, false>; |
1548 template class InstARM32UnaryopGPR<InstARM32::Rbit, false>; | 1561 template class InstARM32UnaryopGPR<InstARM32::Rbit, false>; |
1549 template class InstARM32UnaryopGPR<InstARM32::Rev, false>; | 1562 template class InstARM32UnaryopGPR<InstARM32::Rev, false>; |
1550 template class InstARM32UnaryopGPR<InstARM32::Sxt, true>; | 1563 template class InstARM32UnaryopGPR<InstARM32::Sxt, true>; |
1551 template class InstARM32UnaryopGPR<InstARM32::Uxt, true>; | 1564 template class InstARM32UnaryopGPR<InstARM32::Uxt, true>; |
1552 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; | 1565 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; |
1553 | 1566 |
| 1567 template class InstARM32CmpLike<InstARM32::Cmp>; |
| 1568 template class InstARM32CmpLike<InstARM32::Tst>; |
| 1569 |
1554 } // end of namespace Ice | 1570 } // end of namespace Ice |
OLD | NEW |