| OLD | NEW |
| 1 //===- subzero/src/IceTargetLoweringX8632.cpp - x86-32 lowering -----------===// | 1 //===- subzero/src/IceTargetLoweringX8632.cpp - x86-32 lowering -----------===// |
| 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 // This file implements the TargetLoweringX8632 class, which | 10 // This file implements the TargetLoweringX8632 class, which |
| (...skipping 1882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1893 Dest->setPreferredRegister(ReturnReg, false); | 1893 Dest->setPreferredRegister(ReturnReg, false); |
| 1894 if (isVectorType(Dest->getType())) { | 1894 if (isVectorType(Dest->getType())) { |
| 1895 _movp(Dest, ReturnReg); | 1895 _movp(Dest, ReturnReg); |
| 1896 } else { | 1896 } else { |
| 1897 _mov(Dest, ReturnReg); | 1897 _mov(Dest, ReturnReg); |
| 1898 } | 1898 } |
| 1899 } | 1899 } |
| 1900 } else if (Dest->getType() == IceType_f32 || Dest->getType() == IceType_f64) { | 1900 } else if (Dest->getType() == IceType_f32 || Dest->getType() == IceType_f64) { |
| 1901 // Special treatment for an FP function which returns its result in | 1901 // Special treatment for an FP function which returns its result in |
| 1902 // st(0). | 1902 // st(0). |
| 1903 _fstp(Dest); | |
| 1904 // If Dest ends up being a physical xmm register, the fstp emit code | 1903 // If Dest ends up being a physical xmm register, the fstp emit code |
| 1905 // will route st(0) through a temporary stack slot. | 1904 // will route st(0) through a temporary stack slot. |
| 1905 _fstp(Dest); |
| 1906 // Create a fake use of Dest in case it actually isn't used, |
| 1907 // because st(0) still needs to be popped. |
| 1908 Context.insert(InstFakeUse::create(Func, Dest)); |
| 1906 } | 1909 } |
| 1907 } | 1910 } |
| 1908 | 1911 |
| 1909 void TargetX8632::lowerCast(const InstCast *Inst) { | 1912 void TargetX8632::lowerCast(const InstCast *Inst) { |
| 1910 // a = cast(b) ==> t=cast(b); a=t; (link t->b, link a->t, no overlap) | 1913 // a = cast(b) ==> t=cast(b); a=t; (link t->b, link a->t, no overlap) |
| 1911 InstCast::OpKind CastKind = Inst->getCastKind(); | 1914 InstCast::OpKind CastKind = Inst->getCastKind(); |
| 1912 Variable *Dest = Inst->getDest(); | 1915 Variable *Dest = Inst->getDest(); |
| 1913 switch (CastKind) { | 1916 switch (CastKind) { |
| 1914 default: | 1917 default: |
| 1915 Func->setError("Cast type not supported"); | 1918 Func->setError("Cast type not supported"); |
| (...skipping 2544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4460 Str << "\t.align\t" << Align << "\n"; | 4463 Str << "\t.align\t" << Align << "\n"; |
| 4461 Str << MangledName << ":\n"; | 4464 Str << MangledName << ":\n"; |
| 4462 for (SizeT i = 0; i < Size; ++i) { | 4465 for (SizeT i = 0; i < Size; ++i) { |
| 4463 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; | 4466 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; |
| 4464 } | 4467 } |
| 4465 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; | 4468 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; |
| 4466 } | 4469 } |
| 4467 } | 4470 } |
| 4468 | 4471 |
| 4469 } // end of namespace Ice | 4472 } // end of namespace Ice |
| OLD | NEW |