OLD | NEW |
1 // | 1 // |
2 // The Subzero Code Generator | 2 // The Subzero Code Generator |
3 // | 3 // |
4 // This file is distributed under the University of Illinois Open Source | 4 // This file is distributed under the University of Illinois Open Source |
5 // License. See LICENSE.TXT for details. | 5 // License. See LICENSE.TXT for details. |
6 // | 6 // |
7 //===----------------------------------------------------------------------===// | 7 //===----------------------------------------------------------------------===// |
8 /// | 8 /// |
9 /// \file | 9 /// \file |
10 /// \brief Implements the TargetLoweringMIPS32 class, which consists almost | 10 /// \brief Implements the TargetLoweringMIPS32 class, which consists almost |
(...skipping 3281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3292 Value = legalizeToReg(Value); | 3292 Value = legalizeToReg(Value); |
3293 _br(NoTargetFalse, TargetTrue, SrcVar, Value, CondMIPS32::Cond::EQ); | 3293 _br(NoTargetFalse, TargetTrue, SrcVar, Value, CondMIPS32::Cond::EQ); |
3294 } | 3294 } |
3295 _br(Instr->getLabelDefault()); | 3295 _br(Instr->getLabelDefault()); |
3296 } | 3296 } |
3297 | 3297 |
3298 void TargetMIPS32::lowerBreakpoint(const InstBreakpoint *Instr) { | 3298 void TargetMIPS32::lowerBreakpoint(const InstBreakpoint *Instr) { |
3299 UnimplementedLoweringError(this, Instr); | 3299 UnimplementedLoweringError(this, Instr); |
3300 } | 3300 } |
3301 | 3301 |
3302 void TargetMIPS32::lowerUnreachable(const InstUnreachable *Instr) { | 3302 void TargetMIPS32::lowerUnreachable(const InstUnreachable *) { |
3303 UnimplementedLoweringError(this, Instr); | 3303 const uint32_t TrapCodeZero = 0; |
| 3304 _teq(getZero(), getZero(), TrapCodeZero); |
3304 } | 3305 } |
3305 | 3306 |
3306 // Turn an i64 Phi instruction into a pair of i32 Phi instructions, to preserve | 3307 // Turn an i64 Phi instruction into a pair of i32 Phi instructions, to preserve |
3307 // integrity of liveness analysis. Undef values are also turned into zeroes, | 3308 // integrity of liveness analysis. Undef values are also turned into zeroes, |
3308 // since loOperand() and hiOperand() don't expect Undef input. | 3309 // since loOperand() and hiOperand() don't expect Undef input. |
3309 void TargetMIPS32::prelowerPhis() { | 3310 void TargetMIPS32::prelowerPhis() { |
3310 PhiLowering::prelowerPhis32Bit<TargetMIPS32>(this, Context.getNode(), Func); | 3311 PhiLowering::prelowerPhis32Bit<TargetMIPS32>(this, Context.getNode(), Func); |
3311 } | 3312 } |
3312 | 3313 |
3313 void TargetMIPS32::postLower() { | 3314 void TargetMIPS32::postLower() { |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3607 Str << "\t.set\t" | 3608 Str << "\t.set\t" |
3608 << "nomips16\n"; | 3609 << "nomips16\n"; |
3609 } | 3610 } |
3610 | 3611 |
3611 SmallBitVector TargetMIPS32::TypeToRegisterSet[RCMIPS32_NUM]; | 3612 SmallBitVector TargetMIPS32::TypeToRegisterSet[RCMIPS32_NUM]; |
3612 SmallBitVector TargetMIPS32::TypeToRegisterSetUnfiltered[RCMIPS32_NUM]; | 3613 SmallBitVector TargetMIPS32::TypeToRegisterSetUnfiltered[RCMIPS32_NUM]; |
3613 SmallBitVector TargetMIPS32::RegisterAliases[RegMIPS32::Reg_NUM]; | 3614 SmallBitVector TargetMIPS32::RegisterAliases[RegMIPS32::Reg_NUM]; |
3614 | 3615 |
3615 } // end of namespace MIPS32 | 3616 } // end of namespace MIPS32 |
3616 } // end of namespace Ice | 3617 } // end of namespace Ice |
OLD | NEW |