translator: add arm llvm lib
This commit is contained in:
@@ -30,7 +30,7 @@ for i in $( ls "$DIRECTORY/input" $1); do
|
|||||||
clang-3.6 -S -emit-llvm $DIRECTORY/linked/main.c -o $DIRECTORY/linked/main.ll -Wno-implicit-function-declaration
|
clang-3.6 -S -emit-llvm $DIRECTORY/linked/main.c -o $DIRECTORY/linked/main.ll -Wno-implicit-function-declaration
|
||||||
rm -f $DIRECTORY/linked/main.c
|
rm -f $DIRECTORY/linked/main.c
|
||||||
|
|
||||||
cp ./src/main/resources/kotlib/linked/* $DIRECTORY/linked/
|
cp ./src/main/resources/kotlib/linked/x86/* $DIRECTORY/linked/
|
||||||
|
|
||||||
if [ -f "$DIRECTORY/c/$TEST.c" ]
|
if [ -f "$DIRECTORY/c/$TEST.c" ]
|
||||||
then
|
then
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
; ModuleID = 'array.c'
|
||||||
|
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||||
|
target triple = "thumbv7m-none--eabi"
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @malloc_array(i32 %x) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %x, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = call i8* @malloc(i32 %2) #2
|
||||||
|
%4 = ptrtoint i8* %3 to i32
|
||||||
|
ret i32 %4
|
||||||
|
}
|
||||||
|
|
||||||
|
declare i8* @malloc(i32) #1
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_get_byte(i32 %data, i32 %index) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
%2 = alloca i32, align 4
|
||||||
|
store i32 %data, i32* %1, align 4
|
||||||
|
store i32 %index, i32* %2, align 4
|
||||||
|
%3 = load i32* %1, align 4
|
||||||
|
%4 = inttoptr i32 %3 to i8*
|
||||||
|
%5 = load i32* %2, align 4
|
||||||
|
%6 = getelementptr inbounds i8* %4, i32 %5
|
||||||
|
%7 = load i8* %6, align 1
|
||||||
|
ret i8 %7
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define void @kotlinclib_set_byte(i32 %data, i32 %index, i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
%2 = alloca i32, align 4
|
||||||
|
%3 = alloca i8, align 1
|
||||||
|
%ptr = alloca i8*, align 4
|
||||||
|
store i32 %data, i32* %1, align 4
|
||||||
|
store i32 %index, i32* %2, align 4
|
||||||
|
store i8 %value, i8* %3, align 1
|
||||||
|
%4 = load i32* %1, align 4
|
||||||
|
%5 = inttoptr i32 %4 to i8*
|
||||||
|
store i8* %5, i8** %ptr, align 4
|
||||||
|
%6 = load i8* %3, align 1
|
||||||
|
%7 = load i8** %ptr, align 4
|
||||||
|
%8 = load i32* %2, align 4
|
||||||
|
%9 = getelementptr inbounds i8* %7, i32 %8
|
||||||
|
store i8 %6, i8* %9, align 1
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_get_int(i32 %data, i32 %index) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
%2 = alloca i32, align 4
|
||||||
|
store i32 %data, i32* %1, align 4
|
||||||
|
store i32 %index, i32* %2, align 4
|
||||||
|
%3 = load i32* %1, align 4
|
||||||
|
%4 = inttoptr i32 %3 to i32*
|
||||||
|
%5 = load i32* %2, align 4
|
||||||
|
%6 = getelementptr inbounds i32* %4, i32 %5
|
||||||
|
%7 = load i32* %6, align 4
|
||||||
|
ret i32 %7
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define void @kotlinclib_set_int(i32 %data, i32 %index, i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
%2 = alloca i32, align 4
|
||||||
|
%3 = alloca i32, align 4
|
||||||
|
%ptr = alloca i32*, align 4
|
||||||
|
store i32 %data, i32* %1, align 4
|
||||||
|
store i32 %index, i32* %2, align 4
|
||||||
|
store i32 %value, i32* %3, align 4
|
||||||
|
%4 = load i32* %1, align 4
|
||||||
|
%5 = inttoptr i32 %4 to i32*
|
||||||
|
store i32* %5, i32** %ptr, align 4
|
||||||
|
%6 = load i32* %3, align 4
|
||||||
|
%7 = load i32** %ptr, align 4
|
||||||
|
%8 = load i32* %2, align 4
|
||||||
|
%9 = getelementptr inbounds i32* %7, i32 %8
|
||||||
|
store i32 %6, i32* %9, align 4
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_get_short(i32 %data, i32 %index) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
%2 = alloca i32, align 4
|
||||||
|
store i32 %data, i32* %1, align 4
|
||||||
|
store i32 %index, i32* %2, align 4
|
||||||
|
%3 = load i32* %1, align 4
|
||||||
|
%4 = inttoptr i32 %3 to i16*
|
||||||
|
%5 = load i32* %2, align 4
|
||||||
|
%6 = getelementptr inbounds i16* %4, i32 %5
|
||||||
|
%7 = load i16* %6, align 2
|
||||||
|
ret i16 %7
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define void @kotlinclib_set_short(i32 %data, i32 %index, i16 signext %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
%2 = alloca i32, align 4
|
||||||
|
%3 = alloca i16, align 2
|
||||||
|
%ptr = alloca i16*, align 4
|
||||||
|
store i32 %data, i32* %1, align 4
|
||||||
|
store i32 %index, i32* %2, align 4
|
||||||
|
store i16 %value, i16* %3, align 2
|
||||||
|
%4 = load i32* %1, align 4
|
||||||
|
%5 = inttoptr i32 %4 to i16*
|
||||||
|
store i16* %5, i16** %ptr, align 4
|
||||||
|
%6 = load i16* %3, align 2
|
||||||
|
%7 = load i16** %ptr, align 4
|
||||||
|
%8 = load i32* %2, align 4
|
||||||
|
%9 = getelementptr inbounds i16* %7, i32 %8
|
||||||
|
store i16 %6, i16* %9, align 2
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||||
|
attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||||
|
attributes #2 = { nobuiltin }
|
||||||
|
|
||||||
|
!llvm.module.flags = !{!0, !1}
|
||||||
|
!llvm.ident = !{!2}
|
||||||
|
|
||||||
|
!0 = !{i32 1, !"wchar_size", i32 4}
|
||||||
|
!1 = !{i32 1, !"min_enum_size", i32 4}
|
||||||
@@ -0,0 +1,385 @@
|
|||||||
|
; ModuleID = 'primitives.c'
|
||||||
|
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||||
|
target triple = "thumbv7m-none--eabi"
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_intToByte(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = trunc i32 %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_intToChar(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = trunc i32 %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_intToShort(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = trunc i32 %2 to i16
|
||||||
|
ret i16 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_intToLong(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
ret i32 %2
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define float @kotlinclib_intToFloat(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = sitofp i32 %2 to float
|
||||||
|
ret float %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define double @kotlinclib_intToDouble(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = sitofp i32 %2 to double
|
||||||
|
ret double %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_byteToChar(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
ret i8 %2
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_byteToShort(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = zext i8 %2 to i16
|
||||||
|
ret i16 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_byteToInt(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = zext i8 %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_byteToLong(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = zext i8 %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define float @kotlinclib_byteToFloat(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = uitofp i8 %2 to float
|
||||||
|
ret float %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define double @kotlinclib_byteToDouble(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = uitofp i8 %2 to double
|
||||||
|
ret double %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_charToByte(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
ret i8 %2
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_charToShort(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = zext i8 %2 to i16
|
||||||
|
ret i16 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_charToInt(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = zext i8 %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_charToLong(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = zext i8 %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define float @kotlinclib_charToFloat(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = uitofp i8 %2 to float
|
||||||
|
ret float %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define double @kotlinclib_charToDouble(i8 zeroext %value) #0 {
|
||||||
|
%1 = alloca i8, align 1
|
||||||
|
store i8 %value, i8* %1, align 1
|
||||||
|
%2 = load i8* %1, align 1
|
||||||
|
%3 = uitofp i8 %2 to double
|
||||||
|
ret double %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_shortToByte(i16 signext %value) #0 {
|
||||||
|
%1 = alloca i16, align 2
|
||||||
|
store i16 %value, i16* %1, align 2
|
||||||
|
%2 = load i16* %1, align 2
|
||||||
|
%3 = trunc i16 %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_shortToChar(i16 signext %value) #0 {
|
||||||
|
%1 = alloca i16, align 2
|
||||||
|
store i16 %value, i16* %1, align 2
|
||||||
|
%2 = load i16* %1, align 2
|
||||||
|
%3 = trunc i16 %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_shortToInt(i16 signext %value) #0 {
|
||||||
|
%1 = alloca i16, align 2
|
||||||
|
store i16 %value, i16* %1, align 2
|
||||||
|
%2 = load i16* %1, align 2
|
||||||
|
%3 = sext i16 %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_shortToLong(i16 signext %value) #0 {
|
||||||
|
%1 = alloca i16, align 2
|
||||||
|
store i16 %value, i16* %1, align 2
|
||||||
|
%2 = load i16* %1, align 2
|
||||||
|
%3 = sext i16 %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define float @kotlinclib_shortToFloat(i16 signext %value) #0 {
|
||||||
|
%1 = alloca i16, align 2
|
||||||
|
store i16 %value, i16* %1, align 2
|
||||||
|
%2 = load i16* %1, align 2
|
||||||
|
%3 = sitofp i16 %2 to float
|
||||||
|
ret float %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define double @kotlinclib_shortToDouble(i16 signext %value) #0 {
|
||||||
|
%1 = alloca i16, align 2
|
||||||
|
store i16 %value, i16* %1, align 2
|
||||||
|
%2 = load i16* %1, align 2
|
||||||
|
%3 = sitofp i16 %2 to double
|
||||||
|
ret double %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_longToByte(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = trunc i32 %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_longToChar(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = trunc i32 %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_longToShort(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = trunc i32 %2 to i16
|
||||||
|
ret i16 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_longToInt(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
ret i32 %2
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define float @kotlinclib_longToFloat(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = sitofp i32 %2 to float
|
||||||
|
ret float %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define double @kotlinclib_longToDouble(i32 %value) #0 {
|
||||||
|
%1 = alloca i32, align 4
|
||||||
|
store i32 %value, i32* %1, align 4
|
||||||
|
%2 = load i32* %1, align 4
|
||||||
|
%3 = sitofp i32 %2 to double
|
||||||
|
ret double %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_floatToByte(float %value) #0 {
|
||||||
|
%1 = alloca float, align 4
|
||||||
|
store float %value, float* %1, align 4
|
||||||
|
%2 = load float* %1, align 4
|
||||||
|
%3 = fptoui float %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_floatToChar(float %value) #0 {
|
||||||
|
%1 = alloca float, align 4
|
||||||
|
store float %value, float* %1, align 4
|
||||||
|
%2 = load float* %1, align 4
|
||||||
|
%3 = fptoui float %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_floatToShort(float %value) #0 {
|
||||||
|
%1 = alloca float, align 4
|
||||||
|
store float %value, float* %1, align 4
|
||||||
|
%2 = load float* %1, align 4
|
||||||
|
%3 = fptosi float %2 to i16
|
||||||
|
ret i16 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_floatToInt(float %value) #0 {
|
||||||
|
%1 = alloca float, align 4
|
||||||
|
store float %value, float* %1, align 4
|
||||||
|
%2 = load float* %1, align 4
|
||||||
|
%3 = fptosi float %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_floatToLong(float %value) #0 {
|
||||||
|
%1 = alloca float, align 4
|
||||||
|
store float %value, float* %1, align 4
|
||||||
|
%2 = load float* %1, align 4
|
||||||
|
%3 = fptosi float %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define double @kotlinclib_floatToDouble(float %value) #0 {
|
||||||
|
%1 = alloca float, align 4
|
||||||
|
store float %value, float* %1, align 4
|
||||||
|
%2 = load float* %1, align 4
|
||||||
|
%3 = fpext float %2 to double
|
||||||
|
ret double %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_doubleToByte(double %value) #0 {
|
||||||
|
%1 = alloca double, align 8
|
||||||
|
store double %value, double* %1, align 8
|
||||||
|
%2 = load double* %1, align 8
|
||||||
|
%3 = fptoui double %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define zeroext i8 @kotlinclib_doubleToChar(double %value) #0 {
|
||||||
|
%1 = alloca double, align 8
|
||||||
|
store double %value, double* %1, align 8
|
||||||
|
%2 = load double* %1, align 8
|
||||||
|
%3 = fptoui double %2 to i8
|
||||||
|
ret i8 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define signext i16 @kotlinclib_doubleToShort(double %value) #0 {
|
||||||
|
%1 = alloca double, align 8
|
||||||
|
store double %value, double* %1, align 8
|
||||||
|
%2 = load double* %1, align 8
|
||||||
|
%3 = fptosi double %2 to i16
|
||||||
|
ret i16 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_doubleToInt(double %value) #0 {
|
||||||
|
%1 = alloca double, align 8
|
||||||
|
store double %value, double* %1, align 8
|
||||||
|
%2 = load double* %1, align 8
|
||||||
|
%3 = fptosi double %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define i32 @kotlinclib_doubleToLong(double %value) #0 {
|
||||||
|
%1 = alloca double, align 8
|
||||||
|
store double %value, double* %1, align 8
|
||||||
|
%2 = load double* %1, align 8
|
||||||
|
%3 = fptosi double %2 to i32
|
||||||
|
ret i32 %3
|
||||||
|
}
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define float @kotlinclib_doubleToFloat(double %value) #0 {
|
||||||
|
%1 = alloca double, align 8
|
||||||
|
store double %value, double* %1, align 8
|
||||||
|
%2 = load double* %1, align 8
|
||||||
|
%3 = fptrunc double %2 to float
|
||||||
|
ret float %3
|
||||||
|
}
|
||||||
|
|
||||||
|
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||||
|
|
||||||
|
!llvm.module.flags = !{!0, !1}
|
||||||
|
!llvm.ident = !{!2}
|
||||||
|
|
||||||
|
!0 = !{i32 1, !"wchar_size", i32 4}
|
||||||
|
!1 = !{i32 1, !"min_enum_size", i32 4}
|
||||||
Reference in New Issue
Block a user