Lines Matching full:instruction
30 void VisitAnd(HAnd* instruction) OVERRIDE;
31 void VisitMul(HMul* instruction) OVERRIDE;
32 void VisitOr(HOr* instruction) OVERRIDE;
33 void VisitRem(HRem* instruction) OVERRIDE;
34 void VisitShl(HShl* instruction) OVERRIDE;
35 void VisitShr(HShr* instruction) OVERRIDE;
36 void VisitSub(HSub* instruction) OVERRIDE;
37 void VisitUShr(HUShr* instruction) OVERRIDE;
38 void VisitXor(HXor* instruction) OVERRIDE;
44 // so that an instruction turned into a constant, used as input of
45 // another instruction, may possibly be used to turn that second
46 // instruction into a constant as well.
86 void InstructionWithAbsorbingInputSimplifier::VisitShift(HBinaryOperation* instruction) {
87 DCHECK(instruction->IsShl() || instruction->IsShr() || instruction->IsUShr());
88 HInstruction* left = instruction->GetLeft();
94 instruction->ReplaceWith(left);
95 instruction->GetBlock()->RemoveInstruction(instruction);
99 void InstructionWithAbsorbingInputSimplifier::VisitAnd(HAnd* instruction) {
100 HConstant* input_cst = instruction->GetConstantRight();
106 instruction->ReplaceWith(input_cst);
107 instruction->GetBlock()->RemoveInstruction(instruction);
111 void InstructionWithAbsorbingInputSimplifier::VisitMul(HMul* instruction) {
112 HConstant* input_cst = instruction->GetConstantRight();
113 Primitive::Type type = instruction->GetType();
123 instruction->ReplaceWith(input_cst);
124 instruction->GetBlock()->RemoveInstruction(instruction);
128 void InstructionWithAbsorbingInputSimplifier::VisitOr(HOr* instruction) {
129 HConstant* input_cst = instruction->GetConstantRight();
140 instruction->ReplaceWith(input_cst);
141 instruction->GetBlock()->RemoveInstruction(instruction);
145 void InstructionWithAbsorbingInputSimplifier::VisitRem(HRem* instruction) {
146 Primitive::Type type = instruction->GetType();
152 HBasicBlock* block = instruction->GetBlock();
154 if (instruction->GetLeft()->IsConstant() &&
155 instruction->GetLeft()->AsConstant()->IsZero()) {
160 instruction->ReplaceWith(instruction->GetLeft());
161 block->RemoveInstruction(instruction);
164 HConstant* cst_right = instruction->GetRight()->AsConstant();
167 (instruction->GetLeft() == instruction->GetRight())) {
176 instruction->ReplaceWith(GetGraph()->GetConstant(type, 0));
177 block->RemoveInstruction(instruction);
181 void InstructionWithAbsorbingInputSimplifier::VisitShl(HShl* instruction) {
182 VisitShift(instruction);
185 void InstructionWithAbsorbingInputSimplifier::VisitShr(HShr* instruction) {
186 VisitShift(instruction);
189 void InstructionWithAbsorbingInputSimplifier::VisitSub(HSub* instruction) {
190 Primitive::Type type = instruction->GetType();
196 HBasicBlock* block = instruction->GetBlock();
202 if (instruction->GetLeft() == instruction->GetRight()) {
209 instruction->ReplaceWith(GetGraph()->GetConstant(type, 0));
210 block->RemoveInstruction(instruction);
214 void InstructionWithAbsorbingInputSimplifier::VisitUShr(HUShr* instruction) {
215 VisitShift(instruction);
218 void InstructionWithAbsorbingInputSimplifier::VisitXor(HXor* instruction) {
219 if (instruction->GetLeft() == instruction->GetRight()) {
224 Primitive::Type type = instruction->GetType();
225 HBasicBlock* block = instruction->GetBlock();
226 instruction->ReplaceWith(GetGraph()->GetConstant(type, 0));
227 block->RemoveInstruction(instruction);