blob: ff0f9b0f79a9ea3fd26d57ef9ee1b719d1944b73 [file] [log] [blame]
Jim Stichnoth10ea6982014-09-09 11:19:12 -07001//===- subzero/runtime/szrt.c - Subzero runtime source ----------*- C++ -*-===//
2//
3// The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
Jim Stichnoth9738a9e2015-02-23 16:39:06 -080010// This file implements wrappers for particular bitcode instructions
11// that are too uncommon and complex for a particular target to bother
12// implementing directly in Subzero target lowering. This needs to be
13// compiled by some non-Subzero compiler.
Jim Stichnoth10ea6982014-09-09 11:19:12 -070014//
15//===----------------------------------------------------------------------===//
16
17#include <stdint.h>
Jim Stichnoth10ea6982014-09-09 11:19:12 -070018
Jim Stichnotha67fc442015-03-03 16:13:11 -080019uint32_t __Sz_fptoui_f32_i32(float value) { return (uint32_t)value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070020
Jim Stichnotha67fc442015-03-03 16:13:11 -080021uint32_t __Sz_fptoui_f64_i32(double value) { return (uint32_t)value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070022
Jim Stichnothc4508792015-03-01 23:12:55 -080023uint64_t __Sz_fptoui_f32_i64(float Value) { return (uint64_t)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070024
Jim Stichnothc4508792015-03-01 23:12:55 -080025uint64_t __Sz_fptoui_f64_i64(double Value) { return (uint64_t)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070026
Jim Stichnothc4508792015-03-01 23:12:55 -080027int64_t __Sz_fptosi_f32_i64(float Value) { return (int64_t)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070028
Jim Stichnothc4508792015-03-01 23:12:55 -080029int64_t __Sz_fptosi_f64_i64(double Value) { return (int64_t)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070030
Jim Stichnothc4508792015-03-01 23:12:55 -080031float __Sz_uitofp_i32_f32(uint32_t Value) { return (float)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070032
Jim Stichnothc4508792015-03-01 23:12:55 -080033float __Sz_uitofp_i64_f32(uint64_t Value) { return (float)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070034
Jim Stichnothc4508792015-03-01 23:12:55 -080035double __Sz_uitofp_i32_f64(uint32_t Value) { return (double)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070036
Jim Stichnothc4508792015-03-01 23:12:55 -080037double __Sz_uitofp_i64_f64(uint64_t Value) { return (double)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070038
Jim Stichnothc4508792015-03-01 23:12:55 -080039float __Sz_sitofp_i64_f32(int64_t Value) { return (float)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070040
Jim Stichnothc4508792015-03-01 23:12:55 -080041double __Sz_sitofp_i64_f64(int64_t Value) { return (double)Value; }
Jim Stichnoth10ea6982014-09-09 11:19:12 -070042
Jim Stichnothc4508792015-03-01 23:12:55 -080043// Other helper calls emitted by Subzero but not implemented here:
44// Compiler-rt:
Jan Voung6ec369e2015-06-30 11:03:15 -070045// __udivsi3 - udiv i32
46// __divsi3 - sdiv i32
47// __umodsi3 - urem i32
48// __modsi3 - srem i32
Jim Stichnothc4508792015-03-01 23:12:55 -080049// __udivdi3 - udiv i64
50// __divdi3 - sdiv i64
51// __umoddi3 - urem i64
52// __moddi3 - srem i64
53// __popcountsi2 - call @llvm.ctpop.i32
54// __popcountdi2 - call @llvm.ctpop.i64
55// libm:
56// fmodf - frem f32
57// fmod - frem f64
58// libc:
59// setjmp - call @llvm.nacl.setjmp
60// longjmp - call @llvm.nacl.longjmp
61// memcpy - call @llvm.memcpy.p0i8.p0i8.i32
62// memmove - call @llvm.memmove.p0i8.p0i8.i32
63// memset - call @llvm.memset.p0i8.i32
64// unsandboxed_irt:
65// __nacl_read_tp
John Portodc619252016-02-10 15:57:16 -080066// __aeabi_read_tp [arm32 only]
Jaydeep Patil71f6c8d2017-02-10 06:45:40 -080067// MIPS runtime library:
68// __sync_fetch_and_add_8
69// __sync_fetch_and_and_8
70// __sync_fetch_and_or_8
71// __sync_fetch_and_sub_8
72// __sync_fetch_and_xor_8
73// __sync_lock_test_and_set_8
74// __sync_val_compare_and_swap_8