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 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 } | 520 } |
521 | 521 |
522 template <> void InstARM32Cmp::emitIAS(const Cfg *Func) const { | 522 template <> void InstARM32Cmp::emitIAS(const Cfg *Func) const { |
523 assert(getSrcSize() == 2); | 523 assert(getSrcSize() == 2); |
524 ARM32::AssemblerARM32 *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); | 524 ARM32::AssemblerARM32 *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
525 Asm->cmp(getSrc(0), getSrc(1), getPredicate()); | 525 Asm->cmp(getSrc(0), getSrc(1), getPredicate()); |
526 if (Asm->needsTextFixup()) | 526 if (Asm->needsTextFixup()) |
527 emitUsingTextFixup(Func); | 527 emitUsingTextFixup(Func); |
528 } | 528 } |
529 | 529 |
| 530 template <> void InstARM32Tst::emitIAS(const Cfg *Func) const { |
| 531 assert(getSrcSize() == 2); |
| 532 ARM32::AssemblerARM32 *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
| 533 Asm->tst(getSrc(0), getSrc(1), getPredicate()); |
| 534 if (Asm->needsTextFixup()) |
| 535 emitUsingTextFixup(Func); |
| 536 } |
| 537 |
530 InstARM32Vcmp::InstARM32Vcmp(Cfg *Func, Variable *Src0, Variable *Src1, | 538 InstARM32Vcmp::InstARM32Vcmp(Cfg *Func, Variable *Src0, Variable *Src1, |
531 CondARM32::Cond Predicate) | 539 CondARM32::Cond Predicate) |
532 : InstARM32Pred(Func, InstARM32::Vcmp, 2, nullptr, Predicate) { | 540 : InstARM32Pred(Func, InstARM32::Vcmp, 2, nullptr, Predicate) { |
533 addSource(Src0); | 541 addSource(Src0); |
534 addSource(Src1); | 542 addSource(Src1); |
535 } | 543 } |
536 | 544 |
537 InstARM32Vmrs::InstARM32Vmrs(Cfg *Func, CondARM32::Cond Predicate) | 545 InstARM32Vmrs::InstARM32Vmrs(Cfg *Func, CondARM32::Cond Predicate) |
538 : InstARM32Pred(Func, InstARM32::Vmrs, 0, nullptr, Predicate) {} | 546 : InstARM32Pred(Func, InstARM32::Vmrs, 0, nullptr, Predicate) {} |
539 | 547 |
(...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1591 template class InstARM32UnaryopGPR<InstARM32::Rbit, false>; | 1599 template class InstARM32UnaryopGPR<InstARM32::Rbit, false>; |
1592 template class InstARM32UnaryopGPR<InstARM32::Rev, false>; | 1600 template class InstARM32UnaryopGPR<InstARM32::Rev, false>; |
1593 template class InstARM32UnaryopGPR<InstARM32::Sxt, true>; | 1601 template class InstARM32UnaryopGPR<InstARM32::Sxt, true>; |
1594 template class InstARM32UnaryopGPR<InstARM32::Uxt, true>; | 1602 template class InstARM32UnaryopGPR<InstARM32::Uxt, true>; |
1595 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; | 1603 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; |
1596 | 1604 |
1597 template class InstARM32CmpLike<InstARM32::Cmp>; | 1605 template class InstARM32CmpLike<InstARM32::Cmp>; |
1598 template class InstARM32CmpLike<InstARM32::Tst>; | 1606 template class InstARM32CmpLike<InstARM32::Tst>; |
1599 | 1607 |
1600 } // end of namespace Ice | 1608 } // end of namespace Ice |
OLD | NEW |