xo-umbrella2/xo-jit/example/ex_cpp/tmp.ll
Roland Conybeare 1443af05e0 git subrepo clone git@github.com:Rconybea/xo-jit.git xo-jit
subrepo:
  subdir:   "xo-jit"
  merged:   "29904c01"
upstream:
  origin:   "git@github.com:Rconybea/xo-jit.git"
  branch:   "main"
  commit:   "29904c01"
git-subrepo:
  version:  "0.4.9"
  origin:   "???"
  commit:   "???"
2026-06-06 22:13:26 -04:00

58 lines
2 KiB
LLVM

define double @root4(ptr %.env, double %x) {
entry:
%x1 = alloca double, align 8
store double %x, ptr %x1, align 8
%x2 = load double, ptr %x1, align 8
%calltmp = call double @w.sqrt(ptr null, double %x2)
%calltmp3 = call double @w.sqrt(ptr null, double %calltmp)
ret double %calltmp3
}
; ----------------------------------------------------------------
define double @twice(ptr %.env, { ptr, ptr } %f, double %x) {
entry:
%f1 = alloca { ptr, ptr }, align 8
store { ptr, ptr } %f, ptr %f1, align 8
%x2 = alloca double, align 8
store double %x, ptr %x2, align 8
%f3 = load { ptr, ptr }, ptr %f1, align 8
%fnptr = extractvalue { ptr, ptr } %f3, 0
%envptr = extractvalue { ptr, ptr } %f3, 1
%f4 = load { ptr, ptr }, ptr %f1, align 8
%fnptr5 = extractvalue { ptr, ptr } %f4, 0
%envptr6 = extractvalue { ptr, ptr } %f4, 1
%x7 = load double, ptr %x2, align 8
%calltmp = call double %fnptr5(ptr %envptr6, double %x7)
%calltmp8 = call double %fnptr(ptr %envptr, double %calltmp)
ret double %calltmp8
}
define double @twice(ptr %.env, { ptr, ptr } %f, double %x) {
entry:
%f1 = alloca { ptr, ptr }, align 8
%f.elt = extractvalue { ptr, ptr } %f, 0
store ptr %f.elt, ptr %f1, align 8
%f1.repack9 = getelementptr inbounds { ptr, ptr }, ptr %f1, i64 0, i32 1
%f.elt10 = extractvalue { ptr, ptr } %f, 1
store ptr %f.elt10, ptr %f1.repack9, align 8
%calltmp = call double %f.elt(ptr %f.elt10, double %x)
%calltmp8 = call double %f.elt(ptr %f.elt10, double %calltmp)
ret double %calltmp8
}
;; ----------------------------------------------------------------
define double @root_2x(ptr %.env, double %x2) {
entry:
%x21 = alloca double, align 8
store double %x2, ptr %x21, align 8
%envptr = insertvalue { ptr, ptr } { ptr @twice, ptr undef }, ptr %.env, 1
%fnptr = extractvalue { ptr, ptr } %envptr, 0
%envptr2 = extractvalue { ptr, ptr } %envptr, 1
%x23 = load double, ptr %x21, align 8
%calltmp = call double %fnptr(ptr %envptr2, { ptr, ptr } { ptr @w.sqrt, ptr null }, double %x23)
ret double %calltmp
}