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 1167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1178 } | 1178 } |
1179 | 1179 |
1180 template <> void InstARM32Mvn::emitIAS(const Cfg *Func) const { | 1180 template <> void InstARM32Mvn::emitIAS(const Cfg *Func) const { |
1181 assert(getSrcSize() == 1); | 1181 assert(getSrcSize() == 1); |
1182 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); | 1182 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
1183 Asm->mvn(getDest(), getSrc(0), getPredicate()); | 1183 Asm->mvn(getDest(), getSrc(0), getPredicate()); |
1184 if (Asm->needsTextFixup()) | 1184 if (Asm->needsTextFixup()) |
1185 emitUsingTextFixup(Func); | 1185 emitUsingTextFixup(Func); |
1186 } | 1186 } |
1187 | 1187 |
| 1188 template <> void InstARM32Sxt::emitIAS(const Cfg *Func) const { |
| 1189 assert(getSrcSize() == 1); |
| 1190 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
| 1191 Asm->sxt(getDest(), getSrc(0), getPredicate()); |
| 1192 if (Asm->needsTextFixup()) |
| 1193 emitUsingTextFixup(Func); |
| 1194 } |
| 1195 |
1188 template <> void InstARM32Uxt::emitIAS(const Cfg *Func) const { | 1196 template <> void InstARM32Uxt::emitIAS(const Cfg *Func) const { |
1189 assert(getSrcSize() == 1); | 1197 assert(getSrcSize() == 1); |
1190 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); | 1198 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
1191 Asm->uxt(getDest(), getSrc(0), getPredicate()); | 1199 Asm->uxt(getDest(), getSrc(0), getPredicate()); |
1192 if (Asm->needsTextFixup()) | 1200 if (Asm->needsTextFixup()) |
1193 emitUsingTextFixup(Func); | 1201 emitUsingTextFixup(Func); |
1194 } | 1202 } |
1195 | 1203 |
1196 void InstARM32Pop::emit(const Cfg *Func) const { | 1204 void InstARM32Pop::emit(const Cfg *Func) const { |
1197 // TODO(jpp): Improve FP register save/restore. | 1205 // TODO(jpp): Improve FP register save/restore. |
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1918 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; | 1926 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; |
1919 | 1927 |
1920 template class InstARM32FourAddrGPR<InstARM32::Mla>; | 1928 template class InstARM32FourAddrGPR<InstARM32::Mla>; |
1921 template class InstARM32FourAddrGPR<InstARM32::Mls>; | 1929 template class InstARM32FourAddrGPR<InstARM32::Mls>; |
1922 | 1930 |
1923 template class InstARM32CmpLike<InstARM32::Cmn>; | 1931 template class InstARM32CmpLike<InstARM32::Cmn>; |
1924 template class InstARM32CmpLike<InstARM32::Cmp>; | 1932 template class InstARM32CmpLike<InstARM32::Cmp>; |
1925 template class InstARM32CmpLike<InstARM32::Tst>; | 1933 template class InstARM32CmpLike<InstARM32::Tst>; |
1926 | 1934 |
1927 } // end of namespace Ice | 1935 } // end of namespace Ice |
OLD | NEW |