Subzero: Clean up the runtime implementation.

The runtime helpers are given more consistent names:
  __Sz_<bitcode>_<type1>_<type2>

Missing helpers (various vector bitcasts) are implemented.

We'd prefer to avoid calling external library functions, e.g. in compiler-rt, but even llc uses these helpers for some bitcode on x86-32, so the alternative is to copy their implementation into Subzero's runtime.

BUG= none
R=mtrofin@chromium.org

Review URL: https://codereview.chromium.org/961413002
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index 350b5c7..8b4bd27 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -252,6 +252,40 @@
   int32_t StackAdjustment;
   LoweringContext Context;
 
+  // Runtime helper function names
+  const static constexpr char *H_bitcast_16xi1_i16 = "__Sz_bitcast_16xi1_i16";
+  const static constexpr char *H_bitcast_8xi1_i8 = "__Sz_bitcast_8xi1_i8";
+  const static constexpr char *H_bitcast_i16_16xi1 = "__Sz_bitcast_i16_16xi1";
+  const static constexpr char *H_bitcast_i8_8xi1 = "__Sz_bitcast_i8_8xi1";
+  const static constexpr char *H_call_ctpop_i32 = "__popcountsi2";
+  const static constexpr char *H_call_ctpop_i64 = "__popcountdi2";
+  const static constexpr char *H_call_longjmp = "longjmp";
+  const static constexpr char *H_call_memcpy = "memcpy";
+  const static constexpr char *H_call_memmove = "memmove";
+  const static constexpr char *H_call_memset = "memset";
+  const static constexpr char *H_call_read_tp = "__nacl_read_tp";
+  const static constexpr char *H_call_setjmp = "setjmp";
+  const static constexpr char *H_fptosi_f32_i64 = "__Sz_fptosi_f32_i64";
+  const static constexpr char *H_fptosi_f64_i64 = "__Sz_fptosi_f64_i64";
+  const static constexpr char *H_fptoui_4xi32_f32 = "__Sz_fptoui_4xi32_f32";
+  const static constexpr char *H_fptoui_f32_i32 = "__Sz_fptoui_f32_i32";
+  const static constexpr char *H_fptoui_f32_i64 = "__Sz_fptoui_f32_i64";
+  const static constexpr char *H_fptoui_f64_i32 = "__Sz_fptoui_f64_i32";
+  const static constexpr char *H_fptoui_f64_i64 = "__Sz_fptoui_f64_i64";
+  const static constexpr char *H_frem_f32 = "fmodf";
+  const static constexpr char *H_frem_f64 = "fmod";
+  const static constexpr char *H_sdiv_i64 = "__divdi3";
+  const static constexpr char *H_sitofp_i64_f32 = "__Sz_sitofp_i64_f32";
+  const static constexpr char *H_sitofp_i64_f64 = "__Sz_sitofp_i64_f64";
+  const static constexpr char *H_srem_i64 = "__moddi3";
+  const static constexpr char *H_udiv_i64 = "__udivdi3";
+  const static constexpr char *H_uitofp_4xi32_4xf32 = "__Sz_uitofp_4xi32_4xf32";
+  const static constexpr char *H_uitofp_i32_f32 = "__Sz_uitofp_i32_f32";
+  const static constexpr char *H_uitofp_i32_f64 = "__Sz_uitofp_i32_f64";
+  const static constexpr char *H_uitofp_i64_f32 = "__Sz_uitofp_i64_f32";
+  const static constexpr char *H_uitofp_i64_f64 = "__Sz_uitofp_i64_f64";
+  const static constexpr char *H_urem_i64 = "__umoddi3";
+
 private:
   int32_t SnapshotStackAdjustment;
 };