| OLD | NEW |
| 1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- C++ -*-===// | 1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- 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 // This file declares the TargetLowering, LoweringContext, and | 10 // This file declares the TargetLowering, LoweringContext, and |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 Cfg *Func; | 245 Cfg *Func; |
| 246 GlobalContext *Ctx; | 246 GlobalContext *Ctx; |
| 247 const bool RandomizeRegisterAllocation; | 247 const bool RandomizeRegisterAllocation; |
| 248 bool HasComputedFrame; | 248 bool HasComputedFrame; |
| 249 bool CallsReturnsTwice; | 249 bool CallsReturnsTwice; |
| 250 // StackAdjustment keeps track of the current stack offset from its | 250 // StackAdjustment keeps track of the current stack offset from its |
| 251 // natural location, as arguments are pushed for a function call. | 251 // natural location, as arguments are pushed for a function call. |
| 252 int32_t StackAdjustment; | 252 int32_t StackAdjustment; |
| 253 LoweringContext Context; | 253 LoweringContext Context; |
| 254 | 254 |
| 255 // Runtime helper function names |
| 256 const static IceString H_bitcast_16xi1_i16; |
| 257 const static IceString H_bitcast_8xi1_i8; |
| 258 const static IceString H_bitcast_i16_16xi1; |
| 259 const static IceString H_bitcast_i8_8xi1; |
| 260 const static IceString H_call_ctpop_i32; |
| 261 const static IceString H_call_ctpop_i64; |
| 262 const static IceString H_call_longjmp; |
| 263 const static IceString H_call_memcpy; |
| 264 const static IceString H_call_memmove; |
| 265 const static IceString H_call_memset; |
| 266 const static IceString H_call_read_tp; |
| 267 const static IceString H_call_setjmp; |
| 268 const static IceString H_fptosi_f32_i64; |
| 269 const static IceString H_fptosi_f64_i64; |
| 270 const static IceString H_fptoui_4xi32_f32; |
| 271 const static IceString H_fptoui_f32_i32; |
| 272 const static IceString H_fptoui_f32_i64; |
| 273 const static IceString H_fptoui_f64_i32; |
| 274 const static IceString H_fptoui_f64_i64; |
| 275 const static IceString H_frem_f32; |
| 276 const static IceString H_frem_f64; |
| 277 const static IceString H_sdiv_i64; |
| 278 const static IceString H_sitofp_i64_f32; |
| 279 const static IceString H_sitofp_i64_f64; |
| 280 const static IceString H_srem_i64; |
| 281 const static IceString H_udiv_i64; |
| 282 const static IceString H_uitofp_4xi32_4xf32; |
| 283 const static IceString H_uitofp_i32_f32; |
| 284 const static IceString H_uitofp_i32_f64; |
| 285 const static IceString H_uitofp_i64_f32; |
| 286 const static IceString H_uitofp_i64_f64; |
| 287 const static IceString H_urem_i64; |
| 288 |
| 255 private: | 289 private: |
| 256 int32_t SnapshotStackAdjustment; | 290 int32_t SnapshotStackAdjustment; |
| 257 }; | 291 }; |
| 258 | 292 |
| 259 // TargetDataLowering is used for "lowering" data including initializers | 293 // TargetDataLowering is used for "lowering" data including initializers |
| 260 // for global variables, and the internal constant pools. It is separated | 294 // for global variables, and the internal constant pools. It is separated |
| 261 // out from TargetLowering because it does not require a Cfg. | 295 // out from TargetLowering because it does not require a Cfg. |
| 262 class TargetDataLowering { | 296 class TargetDataLowering { |
| 263 TargetDataLowering() = delete; | 297 TargetDataLowering() = delete; |
| 264 TargetDataLowering(const TargetDataLowering &) = delete; | 298 TargetDataLowering(const TargetDataLowering &) = delete; |
| 265 TargetDataLowering &operator=(const TargetDataLowering &) = delete; | 299 TargetDataLowering &operator=(const TargetDataLowering &) = delete; |
| 266 | 300 |
| 267 public: | 301 public: |
| 268 static std::unique_ptr<TargetDataLowering> createLowering(GlobalContext *Ctx); | 302 static std::unique_ptr<TargetDataLowering> createLowering(GlobalContext *Ctx); |
| 269 virtual ~TargetDataLowering(); | 303 virtual ~TargetDataLowering(); |
| 270 | 304 |
| 271 virtual void | 305 virtual void |
| 272 lowerGlobals(std::unique_ptr<VariableDeclarationList> Vars) const = 0; | 306 lowerGlobals(std::unique_ptr<VariableDeclarationList> Vars) const = 0; |
| 273 virtual void lowerConstants() const = 0; | 307 virtual void lowerConstants() const = 0; |
| 274 | 308 |
| 275 protected: | 309 protected: |
| 276 explicit TargetDataLowering(GlobalContext *Ctx) : Ctx(Ctx) {} | 310 explicit TargetDataLowering(GlobalContext *Ctx) : Ctx(Ctx) {} |
| 277 GlobalContext *Ctx; | 311 GlobalContext *Ctx; |
| 278 }; | 312 }; |
| 279 | 313 |
| 280 } // end of namespace Ice | 314 } // end of namespace Ice |
| 281 | 315 |
| 282 #endif // SUBZERO_SRC_ICETARGETLOWERING_H | 316 #endif // SUBZERO_SRC_ICETARGETLOWERING_H |
| OLD | NEW |