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

Side by Side Diff: src/IceTargetLoweringX86BaseImpl.h

Issue 1222943003: ARM32: Lower more integer intrinsics and test. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: move to TargetLowering Created 5 years, 5 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
« no previous file with comments | « src/IceTargetLoweringX86Base.h ('k') | tests_lit/llvm2ice_tests/nacl-other-intrinsics.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceTargetLoweringX86BaseImpl.h - x86 lowering -*- C++ -*-==// 1 //===- subzero/src/IceTargetLoweringX86BaseImpl.h - x86 lowering -*- C++ -*-==//
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 3503 matching lines...) Expand 10 before | Expand all | Expand 10 after
3514 } 3514 }
3515 case Intrinsics::Memmove: { 3515 case Intrinsics::Memmove: {
3516 InstCall *Call = makeHelperCall(H_call_memmove, nullptr, 3); 3516 InstCall *Call = makeHelperCall(H_call_memmove, nullptr, 3);
3517 Call->addArg(Instr->getArg(0)); 3517 Call->addArg(Instr->getArg(0));
3518 Call->addArg(Instr->getArg(1)); 3518 Call->addArg(Instr->getArg(1));
3519 Call->addArg(Instr->getArg(2)); 3519 Call->addArg(Instr->getArg(2));
3520 lowerCall(Call); 3520 lowerCall(Call);
3521 return; 3521 return;
3522 } 3522 }
3523 case Intrinsics::Memset: { 3523 case Intrinsics::Memset: {
3524 // The value operand needs to be extended to a stack slot size 3524 // The value operand needs to be extended to a stack slot size because the
3525 // because the PNaCl ABI requires arguments to be at least 32 bits 3525 // PNaCl ABI requires arguments to be at least 32 bits wide.
3526 // wide.
3527 Operand *ValOp = Instr->getArg(1); 3526 Operand *ValOp = Instr->getArg(1);
3528 assert(ValOp->getType() == IceType_i8); 3527 assert(ValOp->getType() == IceType_i8);
3529 Variable *ValExt = Func->template makeVariable(stackSlotType()); 3528 Variable *ValExt = Func->template makeVariable(stackSlotType());
3530 lowerCast(InstCast::create(Func, InstCast::Zext, ValExt, ValOp)); 3529 lowerCast(InstCast::create(Func, InstCast::Zext, ValExt, ValOp));
3531 InstCall *Call = makeHelperCall(H_call_memset, nullptr, 3); 3530 InstCall *Call = makeHelperCall(H_call_memset, nullptr, 3);
3532 Call->addArg(Instr->getArg(0)); 3531 Call->addArg(Instr->getArg(0));
3533 Call->addArg(ValExt); 3532 Call->addArg(ValExt);
3534 Call->addArg(Instr->getArg(2)); 3533 Call->addArg(Instr->getArg(2));
3535 lowerCall(Call); 3534 lowerCall(Call);
3536 return; 3535 return;
(...skipping 1713 matching lines...) Expand 10 before | Expand all | Expand 10 after
5250 // the flags. 5249 // the flags.
5251 Variable *Reg = makeReg(IceType_i32, RegNum); 5250 Variable *Reg = makeReg(IceType_i32, RegNum);
5252 ConstantInteger32 *Integer = llvm::cast<ConstantInteger32>(Immediate); 5251 ConstantInteger32 *Integer = llvm::cast<ConstantInteger32>(Immediate);
5253 uint32_t Value = Integer->getValue(); 5252 uint32_t Value = Integer->getValue();
5254 uint32_t Cookie = Ctx->getRandomizationCookie(); 5253 uint32_t Cookie = Ctx->getRandomizationCookie();
5255 _mov(Reg, Ctx->getConstantInt(IceType_i32, Cookie + Value)); 5254 _mov(Reg, Ctx->getConstantInt(IceType_i32, Cookie + Value));
5256 Constant *Offset = Ctx->getConstantInt(IceType_i32, 0 - Cookie); 5255 Constant *Offset = Ctx->getConstantInt(IceType_i32, 0 - Cookie);
5257 _lea(Reg, Traits::X86OperandMem::create(Func, IceType_i32, Reg, Offset, 5256 _lea(Reg, Traits::X86OperandMem::create(Func, IceType_i32, Reg, Offset,
5258 nullptr, 0)); 5257 nullptr, 0));
5259 // make sure liveness analysis won't kill this variable, otherwise a 5258 // make sure liveness analysis won't kill this variable, otherwise a
5260 // liveness 5259 // liveness assertion will be triggered.
5261 // assertion will be triggered.
5262 _set_dest_nonkillable(); 5260 _set_dest_nonkillable();
5263 if (Immediate->getType() != IceType_i32) { 5261 if (Immediate->getType() != IceType_i32) {
5264 Variable *TruncReg = makeReg(Immediate->getType(), RegNum); 5262 Variable *TruncReg = makeReg(Immediate->getType(), RegNum);
5265 _mov(TruncReg, Reg); 5263 _mov(TruncReg, Reg);
5266 return TruncReg; 5264 return TruncReg;
5267 } 5265 }
5268 return Reg; 5266 return Reg;
5269 } 5267 }
5270 if (Ctx->getFlags().getRandomizeAndPoolImmediatesOption() == RPI_Pool) { 5268 if (Ctx->getFlags().getRandomizeAndPoolImmediatesOption() == RPI_Pool) {
5271 // pool the constant 5269 // pool the constant
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
5419 } 5417 }
5420 // the offset is not eligible for blinding or pooling, return the original 5418 // the offset is not eligible for blinding or pooling, return the original
5421 // mem operand 5419 // mem operand
5422 return MemOperand; 5420 return MemOperand;
5423 } 5421 }
5424 5422
5425 } // end of namespace X86Internal 5423 } // end of namespace X86Internal
5426 } // end of namespace Ice 5424 } // end of namespace Ice
5427 5425
5428 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASEIMPL_H 5426 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASEIMPL_H
OLDNEW
« no previous file with comments | « src/IceTargetLoweringX86Base.h ('k') | tests_lit/llvm2ice_tests/nacl-other-intrinsics.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698