| 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 2173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2184 case Intrinsics::Memmove: { | 2184 case Intrinsics::Memmove: { |
| 2185 InstCall *Call = makeHelperCall("memmove", NULL, 3); | 2185 InstCall *Call = makeHelperCall("memmove", NULL, 3); |
| 2186 Call->addArg(Instr->getArg(0)); | 2186 Call->addArg(Instr->getArg(0)); |
| 2187 Call->addArg(Instr->getArg(1)); | 2187 Call->addArg(Instr->getArg(1)); |
| 2188 Call->addArg(Instr->getArg(2)); | 2188 Call->addArg(Instr->getArg(2)); |
| 2189 lowerCall(Call); | 2189 lowerCall(Call); |
| 2190 return; | 2190 return; |
| 2191 } | 2191 } |
| 2192 case Intrinsics::Memset: { | 2192 case Intrinsics::Memset: { |
| 2193 // The value operand needs to be extended to a stack slot size | 2193 // The value operand needs to be extended to a stack slot size |
| 2194 // because we "push" only works for a specific operand size. | 2194 // because "push" only works for a specific operand size. |
| 2195 Operand *ValOp = Instr->getArg(1); | 2195 Operand *ValOp = Instr->getArg(1); |
| 2196 assert(ValOp->getType() == IceType_i8); | 2196 assert(ValOp->getType() == IceType_i8); |
| 2197 Variable *ValExt = makeReg(stackSlotType()); | 2197 Variable *ValExt = makeReg(stackSlotType()); |
| 2198 _movzx(ValExt, ValOp); | 2198 _movzx(ValExt, ValOp); |
| 2199 InstCall *Call = makeHelperCall("memset", NULL, 3); | 2199 InstCall *Call = makeHelperCall("memset", NULL, 3); |
| 2200 Call->addArg(Instr->getArg(0)); | 2200 Call->addArg(Instr->getArg(0)); |
| 2201 Call->addArg(ValExt); | 2201 Call->addArg(ValExt); |
| 2202 Call->addArg(Instr->getArg(2)); | 2202 Call->addArg(Instr->getArg(2)); |
| 2203 lowerCall(Call); | 2203 lowerCall(Call); |
| 2204 return; | 2204 return; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2220 return; | 2220 return; |
| 2221 } | 2221 } |
| 2222 case Intrinsics::Sqrt: { | 2222 case Intrinsics::Sqrt: { |
| 2223 Operand *Src = legalize(Instr->getArg(0)); | 2223 Operand *Src = legalize(Instr->getArg(0)); |
| 2224 Variable *Dest = Instr->getDest(); | 2224 Variable *Dest = Instr->getDest(); |
| 2225 Variable *T = makeReg(Dest->getType()); | 2225 Variable *T = makeReg(Dest->getType()); |
| 2226 _sqrtss(T, Src); | 2226 _sqrtss(T, Src); |
| 2227 _mov(Dest, T); | 2227 _mov(Dest, T); |
| 2228 return; | 2228 return; |
| 2229 } | 2229 } |
| 2230 case Intrinsics::Stacksave: | 2230 case Intrinsics::Stacksave: { |
| 2231 case Intrinsics::Stackrestore: | 2231 Variable *esp = Func->getTarget()->getPhysicalRegister(Reg_esp); |
| 2232 // TODO(jvoung): fill it in. | 2232 Variable *Dest = Instr->getDest(); |
| 2233 Func->setError("Unhandled intrinsic"); | 2233 _mov(Dest, esp); |
| 2234 return; | 2234 return; |
| 2235 } |
| 2236 case Intrinsics::Stackrestore: { |
| 2237 Variable *esp = Func->getTarget()->getPhysicalRegister(Reg_esp); |
| 2238 _mov(esp, Instr->getArg(0)); |
| 2239 return; |
| 2240 } |
| 2235 case Intrinsics::Trap: | 2241 case Intrinsics::Trap: |
| 2236 _ud2(); | 2242 _ud2(); |
| 2237 return; | 2243 return; |
| 2238 case Intrinsics::UnknownIntrinsic: | 2244 case Intrinsics::UnknownIntrinsic: |
| 2239 Func->setError("Should not be lowering UnknownIntrinsic"); | 2245 Func->setError("Should not be lowering UnknownIntrinsic"); |
| 2240 return; | 2246 return; |
| 2241 } | 2247 } |
| 2242 return; | 2248 return; |
| 2243 } | 2249 } |
| 2244 | 2250 |
| (...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3199 for (SizeT i = 0; i < Size; ++i) { | 3205 for (SizeT i = 0; i < Size; ++i) { |
| 3200 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; | 3206 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; |
| 3201 } | 3207 } |
| 3202 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; | 3208 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; |
| 3203 } | 3209 } |
| 3204 Str << "\t" << (IsInternal ? ".local" : ".global") << "\t" << MangledName | 3210 Str << "\t" << (IsInternal ? ".local" : ".global") << "\t" << MangledName |
| 3205 << "\n"; | 3211 << "\n"; |
| 3206 } | 3212 } |
| 3207 | 3213 |
| 3208 } // end of namespace Ice | 3214 } // end of namespace Ice |
| OLD | NEW |