Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: src/IceTargetLoweringMIPS32.cpp

Issue 1775253003: Cache common constants before lowering. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Make RuntimeHelper an enum class. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceTargetLoweringMIPS32.cpp - MIPS32 lowering ----------===// 1 //===- subzero/src/IceTargetLoweringMIPS32.cpp - MIPS32 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 /// \file 10 /// \file
(...skipping 992 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 } 1003 }
1004 case Intrinsics::Cttz: { 1004 case Intrinsics::Cttz: {
1005 UnimplementedLoweringError(this, Instr); 1005 UnimplementedLoweringError(this, Instr);
1006 return; 1006 return;
1007 } 1007 }
1008 case Intrinsics::Fabs: { 1008 case Intrinsics::Fabs: {
1009 UnimplementedLoweringError(this, Instr); 1009 UnimplementedLoweringError(this, Instr);
1010 return; 1010 return;
1011 } 1011 }
1012 case Intrinsics::Longjmp: { 1012 case Intrinsics::Longjmp: {
1013 InstCall *Call = makeHelperCall(H_call_longjmp, nullptr, 2); 1013 InstCall *Call = makeHelperCall(RuntimeHelper::H_call_longjmp, nullptr, 2);
1014 Call->addArg(Instr->getArg(0)); 1014 Call->addArg(Instr->getArg(0));
1015 Call->addArg(Instr->getArg(1)); 1015 Call->addArg(Instr->getArg(1));
1016 lowerCall(Call); 1016 lowerCall(Call);
1017 return; 1017 return;
1018 } 1018 }
1019 case Intrinsics::Memcpy: { 1019 case Intrinsics::Memcpy: {
1020 // In the future, we could potentially emit an inline memcpy/memset, etc. 1020 // In the future, we could potentially emit an inline memcpy/memset, etc.
1021 // for intrinsic calls w/ a known length. 1021 // for intrinsic calls w/ a known length.
1022 InstCall *Call = makeHelperCall(H_call_memcpy, nullptr, 3); 1022 InstCall *Call = makeHelperCall(RuntimeHelper::H_call_memcpy, nullptr, 3);
1023 Call->addArg(Instr->getArg(0)); 1023 Call->addArg(Instr->getArg(0));
1024 Call->addArg(Instr->getArg(1)); 1024 Call->addArg(Instr->getArg(1));
1025 Call->addArg(Instr->getArg(2)); 1025 Call->addArg(Instr->getArg(2));
1026 lowerCall(Call); 1026 lowerCall(Call);
1027 return; 1027 return;
1028 } 1028 }
1029 case Intrinsics::Memmove: { 1029 case Intrinsics::Memmove: {
1030 InstCall *Call = makeHelperCall(H_call_memmove, nullptr, 3); 1030 InstCall *Call = makeHelperCall(RuntimeHelper::H_call_memmove, nullptr, 3);
1031 Call->addArg(Instr->getArg(0)); 1031 Call->addArg(Instr->getArg(0));
1032 Call->addArg(Instr->getArg(1)); 1032 Call->addArg(Instr->getArg(1));
1033 Call->addArg(Instr->getArg(2)); 1033 Call->addArg(Instr->getArg(2));
1034 lowerCall(Call); 1034 lowerCall(Call);
1035 return; 1035 return;
1036 } 1036 }
1037 case Intrinsics::Memset: { 1037 case Intrinsics::Memset: {
1038 // The value operand needs to be extended to a stack slot size because the 1038 // The value operand needs to be extended to a stack slot size because the
1039 // PNaCl ABI requires arguments to be at least 32 bits wide. 1039 // PNaCl ABI requires arguments to be at least 32 bits wide.
1040 Operand *ValOp = Instr->getArg(1); 1040 Operand *ValOp = Instr->getArg(1);
1041 assert(ValOp->getType() == IceType_i8); 1041 assert(ValOp->getType() == IceType_i8);
1042 Variable *ValExt = Func->makeVariable(stackSlotType()); 1042 Variable *ValExt = Func->makeVariable(stackSlotType());
1043 lowerCast(InstCast::create(Func, InstCast::Zext, ValExt, ValOp)); 1043 lowerCast(InstCast::create(Func, InstCast::Zext, ValExt, ValOp));
1044 InstCall *Call = makeHelperCall(H_call_memset, nullptr, 3); 1044 InstCall *Call = makeHelperCall(RuntimeHelper::H_call_memset, nullptr, 3);
1045 Call->addArg(Instr->getArg(0)); 1045 Call->addArg(Instr->getArg(0));
1046 Call->addArg(ValExt); 1046 Call->addArg(ValExt);
1047 Call->addArg(Instr->getArg(2)); 1047 Call->addArg(Instr->getArg(2));
1048 lowerCall(Call); 1048 lowerCall(Call);
1049 return; 1049 return;
1050 } 1050 }
1051 case Intrinsics::NaClReadTP: { 1051 case Intrinsics::NaClReadTP: {
1052 if (Ctx->getFlags().getUseSandboxing()) { 1052 if (Ctx->getFlags().getUseSandboxing()) {
1053 UnimplementedLoweringError(this, Instr); 1053 UnimplementedLoweringError(this, Instr);
1054 } else { 1054 } else {
1055 InstCall *Call = makeHelperCall(H_call_read_tp, Instr->getDest(), 0); 1055 InstCall *Call =
1056 makeHelperCall(RuntimeHelper::H_call_read_tp, Instr->getDest(), 0);
1056 lowerCall(Call); 1057 lowerCall(Call);
1057 } 1058 }
1058 return; 1059 return;
1059 } 1060 }
1060 case Intrinsics::Setjmp: { 1061 case Intrinsics::Setjmp: {
1061 InstCall *Call = makeHelperCall(H_call_setjmp, Instr->getDest(), 1); 1062 InstCall *Call =
1063 makeHelperCall(RuntimeHelper::H_call_setjmp, Instr->getDest(), 1);
1062 Call->addArg(Instr->getArg(0)); 1064 Call->addArg(Instr->getArg(0));
1063 lowerCall(Call); 1065 lowerCall(Call);
1064 return; 1066 return;
1065 } 1067 }
1066 case Intrinsics::Sqrt: { 1068 case Intrinsics::Sqrt: {
1067 UnimplementedLoweringError(this, Instr); 1069 UnimplementedLoweringError(this, Instr);
1068 return; 1070 return;
1069 } 1071 }
1070 case Intrinsics::Stacksave: { 1072 case Intrinsics::Stacksave: {
1071 UnimplementedLoweringError(this, Instr); 1073 UnimplementedLoweringError(this, Instr);
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 Str << "\t.set\t" 1317 Str << "\t.set\t"
1316 << "nomips16\n"; 1318 << "nomips16\n";
1317 } 1319 }
1318 1320
1319 SmallBitVector TargetMIPS32::TypeToRegisterSet[RCMIPS32_NUM]; 1321 SmallBitVector TargetMIPS32::TypeToRegisterSet[RCMIPS32_NUM];
1320 SmallBitVector TargetMIPS32::TypeToRegisterSetUnfiltered[RCMIPS32_NUM]; 1322 SmallBitVector TargetMIPS32::TypeToRegisterSetUnfiltered[RCMIPS32_NUM];
1321 SmallBitVector TargetMIPS32::RegisterAliases[RegMIPS32::Reg_NUM]; 1323 SmallBitVector TargetMIPS32::RegisterAliases[RegMIPS32::Reg_NUM];
1322 1324
1323 } // end of namespace MIPS32 1325 } // end of namespace MIPS32
1324 } // end of namespace Ice 1326 } // end of namespace Ice
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698