@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN16SMLSharp__Runtime3BugE=external local_unnamed_addr global i8*
@_SMLZN8IEEEReal9UnorderedE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@_SMLZ8Overflow=external unnamed_addr constant i8*
@_SMLZ3Div=external unnamed_addr constant i8*
@_SMLZ6Domain=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real322_J_KE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real322_J_KE_234 to void(...)*),i32 -2147483647}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real322_J_ME to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real322_J_ME_235 to void(...)*),i32 -2147483647}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real323minE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real323minE_236 to void(...)*),i32 -2147483647}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real323maxE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real323maxE_237 to void(...)*),i32 -2147483647}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN6Real328sameSignE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328sameSignE_238 to void(...)*),i32 -2147483647}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN6Real3211compareRealE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3211compareRealE_239 to void(...)*),i32 -2147483647}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:150.36(4361)\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/basis/main/Real32.sml:149.6(4298)\00"}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN6Real327compareE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real327compareE_240 to void(...)*),i32 -2147483647}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real328toManExpE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328toManExpE_241 to void(...)*),i32 -2147483647}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real325splitE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real325splitE_242 to void(...)*),i32 -2147483647}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real329nextAfterE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329nextAfterE_243 to void(...)*),i32 -2147483647}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real329realRoundE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329realRoundE_245 to void(...)*),i32 -2147483647}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:232.28(6497)\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/basis/main/Real32.sml:229.6(6381)\00"}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real325toIntE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real325toIntE_247 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math2piE=local_unnamed_addr constant float 0x400921FB60000000
@_SMLZN6Real324Math1eE=local_unnamed_addr constant float 0x4005BF0A80000000
@q=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4sqrtE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4sqrtE_249 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4sqrtE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@q,i64 0,i32 2)to i8*)
@r=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math3sinE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math3sinE_250 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math3sinE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@r,i64 0,i32 2)to i8*)
@s=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math3cosE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math3cosE_251 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math3cosE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@s,i64 0,i32 2)to i8*)
@t=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math3tanE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math3tanE_252 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math3tanE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@t,i64 0,i32 2)to i8*)
@u=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4asinE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4asinE_253 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4asinE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@u,i64 0,i32 2)to i8*)
@v=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4acosE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4acosE_254 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4acosE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@v,i64 0,i32 2)to i8*)
@w=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4atanE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4atanE_255 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4atanE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@w,i64 0,i32 2)to i8*)
@x=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real324Math5atan2E to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math5atan2E_256 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math5atan2E=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@x,i64 0,i32 2)to i8*)
@y=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math3expE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math3expE_257 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math3expE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@y,i64 0,i32 2)to i8*)
@z=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math2lnE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math2lnE_259 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math2lnE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@z,i64 0,i32 2)to i8*)
@A=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math5log10E to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math5log10E_260 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math5log10E=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@A,i64 0,i32 2)to i8*)
@B=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4sinhE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4sinhE_261 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4sinhE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@B,i64 0,i32 2)to i8*)
@C=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4coshE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4coshE_262 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4coshE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@C,i64 0,i32 2)to i8*)
@D=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real324Math4tanhE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math4tanhE_263 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324Math4tanhE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@D,i64 0,i32 2)to i8*)
@_SMLZN6Real325radixE=local_unnamed_addr constant i32 2
@_SMLZN6Real329precisionE=local_unnamed_addr constant i32 24
@_SMLZN6Real329maxFiniteE=local_unnamed_addr constant float 0x47EFFFFFE0000000
@_SMLZN6Real326minPosE=local_unnamed_addr constant float 0x36A0000000000000
@_SMLZN6Real3212minNormalPosE=local_unnamed_addr constant float 0x3810000000000000
@_SMLZN6Real326posInfE=local_unnamed_addr global float 0.000000e+00
@_SMLZN6Real326negInfE=local_unnamed_addr global float 0.000000e+00
@_SMLZN6Real322_J_KE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@a,i64 0,i32 2)to i8*)
@_SMLZN6Real322_J_ME=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@b,i64 0,i32 2)to i8*)
@_SMLZN6Real323minE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@c,i64 0,i32 2)to i8*)
@_SMLZN6Real323maxE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@d,i64 0,i32 2)to i8*)
@E=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real324signE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324signE_264 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324signE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@E,i64 0,i32 2)to i8*)
@F=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real327signBitE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real327signBitE_265 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real327signBitE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@F,i64 0,i32 2)to i8*)
@_SMLZN6Real328sameSignE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@e,i64 0,i32 2)to i8*)
@G=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real328copySignE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328copySignE_266 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real328copySignE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@G,i64 0,i32 2)to i8*)
@_SMLZN6Real327compareE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@i,i64 0,i32 2)to i8*)
@_SMLZN6Real3211compareRealE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@f,i64 0,i32 2)to i8*)
@H=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN6Real329unorderedE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329unorderedE_267 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real329unorderedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@H,i64 0,i32 2)to i8*)
@I=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real328isFiniteE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328isFiniteE_268 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real328isFiniteE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@I,i64 0,i32 2)to i8*)
@J=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real328isNormalE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328isNormalE_269 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real328isNormalE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@J,i64 0,i32 2)to i8*)
@K=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real325classE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real325classE_270 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real325classE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@K,i64 0,i32 2)to i8*)
@_SMLZN6Real328toManExpE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@j,i64 0,i32 2)to i8*)
@L=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real3210fromManExpE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3210fromManExpE_271 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real3210fromManExpE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@L,i64 0,i32 2)to i8*)
@_SMLZN6Real325splitE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@k,i64 0,i32 2)to i8*)
@M=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real327realModE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real327realModE_272 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real327realModE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@M,i64 0,i32 2)to i8*)
@_SMLZN6Real329nextAfterE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@l,i64 0,i32 2)to i8*)
@N=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:195.30(5524)\00"}>,align 8
@O=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:194.30(5485)\00"}>,align 8
@P=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real3210checkFloatE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3210checkFloatE_273 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real3210checkFloatE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@P,i64 0,i32 2)to i8*)
@Q=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real329realFloorE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329realFloorE_274 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real329realFloorE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@Q,i64 0,i32 2)to i8*)
@R=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real328realCeilE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328realCeilE_275 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real328realCeilE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@R,i64 0,i32 2)to i8*)
@S=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i32)*@_SMLFN6Real329realTruncE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329realTruncE_276 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real329realTruncE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@S,i64 0,i32 2)to i8*)
@_SMLZN6Real329realRoundE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@m,i64 0,i32 2)to i8*)
@T=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:224.16(6242)\00"}>,align 8
@U=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real325floorE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real325floorE_277 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real325floorE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@U,i64 0,i32 2)to i8*)
@V=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:225.15(6284)\00"}>,align 8
@W=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real324ceilE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324ceilE_278 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324ceilE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@W,i64 0,i32 2)to i8*)
@X=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:226.16(6326)\00"}>,align 8
@Y=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN6Real325roundE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real325roundE_279 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real325roundE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@Y,i64 0,i32 2)to i8*)
@_SMLZN6Real325toIntE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@p,i64 0,i32 2)to i8*)
@Z=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real3210toLargeIntE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3210toLargeIntE_281 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real3210toLargeIntE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@Z,i64 0,i32 2)to i8*)
@aa=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(float(i8*)*@_SMLFN6Real3212fromLargeIntE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3212fromLargeIntE_282 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real3212fromLargeIntE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@aa,i64 0,i32 2)to i8*)
@ab=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/Real32.sml:245.14(6855)\00"}>,align 8
@ac=private unnamed_addr constant<{[4x i8],i32,[41x i8]}><{[4x i8]zeroinitializer,i32 -2147483607,[41x i8]c"FIXME: Real32.fromLarge: not implemented\00"}>,align 8
@ad=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real329fromLargeE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329fromLargeE_284 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real329fromLargeE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ad,i64 0,i32 2)to i8*)
@ae=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN6Real323fmtE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real323fmtE_286 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real323fmtE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ae,i64 0,i32 2)to i8*)
@af=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real328toStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real328toStringE_287 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real328toStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@af,i64 0,i32 2)to i8*)
@ag=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32,i32)*@_SMLFN6Real324scanE to void(...)*),void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN6Real324scanE_288 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real324scanE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ag,i64 0,i32 2)to i8*)
@ah=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN6Real3210fromStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3210fromStringE_289 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real3210fromStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ah,i64 0,i32 2)to i8*)
@ai=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN6Real329toDecimalE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329toDecimalE_290 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real329toDecimalE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ai,i64 0,i32 2)to i8*)
@aj=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN6Real3211fromDecimalE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3211fromDecimalE_291 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN6Real3211fromDecimalE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@aj,i64 0,i32 2)to i8*)
@_SML_gvar629da514a4193178_Real32=private global<{[4x i8],i32,[1x i8*]}><{[4x i8]zeroinitializer,i32 -1342177272,[1x i8*]zeroinitializer}>,align 8
@ak=private unnamed_addr global[2x i64][i64 1,i64 sub(i64 ptrtoint(i8**getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar629da514a4193178_Real32,i32 0,i32 2,i32 0)to i64),i64 ptrtoint([2x i64]*@ak to i64))]
@_SML_ftab629da514a4193178_Real32=external global i8
@al=private unnamed_addr global i8 0
@_SMLZN6Real324Math3powE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar629da514a4193178_Real32,i32 0,i32 2,i32 0)
declare float@acosf(float)local_unnamed_addr
declare float@asinf(float)local_unnamed_addr
declare float@atan2f(float,float)local_unnamed_addr
declare float@atanf(float)local_unnamed_addr
declare float@ceilf(float)local_unnamed_addr
declare float@copysignf(float,float)local_unnamed_addr
declare float@cosf(float)local_unnamed_addr
declare float@coshf(float)local_unnamed_addr
declare float@expf(float)local_unnamed_addr
declare float@floorf(float)local_unnamed_addr
declare float@frexpf(float,i8*)local_unnamed_addr#0
declare float@ldexpf(float,i32)local_unnamed_addr
declare float@llvm.fabs.f32(float)#0
declare void@llvm.gcroot(i8**,i8*)#0
declare float@log10f(float)local_unnamed_addr
declare float@logf(float)local_unnamed_addr
declare float@modff(float,i8*)local_unnamed_addr#0
declare float@nextafterf(float,float)local_unnamed_addr
declare float@powf(float,float)local_unnamed_addr
declare float@sinf(float)local_unnamed_addr
declare float@sinhf(float)local_unnamed_addr
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_end()local_unnamed_addr#0
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_matchcomp_bug()local_unnamed_addr
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare void@sml_start(i8*inreg)local_unnamed_addr#0
declare void@sml_write(i8*inreg,i8**inreg,i8*inreg)local_unnamed_addr#0
declare float@sqrtf(float)local_unnamed_addr
declare float@tanf(float)local_unnamed_addr
declare float@tanhf(float)local_unnamed_addr
declare float@truncf(float)local_unnamed_addr
declare i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__RealClass4signE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__RealClass5classE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__RealClass5isInfE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__RealClass7signBitE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__RealClass8isFiniteE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__RealClass8isNormalE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Real6410toLargeIntE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Real6411fromDecimalE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare double@_SMLFN6Real6412fromLargeIntE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Real643fmtE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Real644scanE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Real648toStringE(i64 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Real649toDecimalE(i64 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9StringCvt10scanStringE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main5c37eb24573fc5f9_StringCvt()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainde1ed1506b8bef54_IEEEReal()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main9d24bdf03f9e5ec9_Real64()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainf8e847239aa6231f_SMLSharp_RealClass()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main00d884c96265bfea_SMLSharp_Runtime()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load5c37eb24573fc5f9_StringCvt(i8*)local_unnamed_addr
declare void@_SML_loadde1ed1506b8bef54_IEEEReal(i8*)local_unnamed_addr
declare void@_SML_load9d24bdf03f9e5ec9_Real64(i8*)local_unnamed_addr
declare void@_SML_loadf8e847239aa6231f_SMLSharp_RealClass(i8*)local_unnamed_addr
declare void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*)local_unnamed_addr
define private void@_SML_tabb629da514a4193178_Real32()#3{
unreachable
}
define void@_SML_load629da514a4193178_Real32(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@al,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@al,align 1
tail call void@_SML_load5c37eb24573fc5f9_StringCvt(i8*%a)#0
tail call void@_SML_loadde1ed1506b8bef54_IEEEReal(i8*%a)#0
tail call void@_SML_load9d24bdf03f9e5ec9_Real64(i8*%a)#0
tail call void@_SML_loadf8e847239aa6231f_SMLSharp_RealClass(i8*%a)#0
tail call void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabb629da514a4193178_Real32,i8*@_SML_ftab629da514a4193178_Real32,i8*bitcast([2x i64]*@ak to i8*))#0
ret void
}
define void@_SML_main629da514a4193178_Real32()local_unnamed_addr#2 gc"smlsharp"{
%a=alloca[3x i8*],align 8
%b=alloca i8*,align 8
%c=load i8,i8*@al,align 1
%d=and i8%c,2
%e=icmp eq i8%d,0
br i1%e,label%g,label%f
f:
ret void
g:
store i8 3,i8*@al,align 1
tail call void@_SML_main5c37eb24573fc5f9_StringCvt()#2
tail call void@_SML_mainde1ed1506b8bef54_IEEEReal()#2
tail call void@_SML_main9d24bdf03f9e5ec9_Real64()#2
tail call void@_SML_mainf8e847239aa6231f_SMLSharp_RealClass()#2
tail call void@_SML_main00d884c96265bfea_SMLSharp_Runtime()#2
call void@llvm.gcroot(i8**%b,i8*null)#0
%h=bitcast[3x i8*]*%a to i8*
call void@sml_start(i8*inreg%h)#0
%i=call i8*@sml_alloc(i32 inreg 12)#0
%j=getelementptr inbounds i8,i8*%i,i64 -4
%k=bitcast i8*%j to i32*
store i32 1342177288,i32*%k,align 4
store i8*%i,i8**%b,align 8
%l=bitcast i8*%i to float*
store float 0x7FF8000000000000,float*%l,align 4
%m=getelementptr inbounds i8,i8*%i,i64 8
%n=bitcast i8*%m to i32*
store i32 0,i32*%n,align 4
%o=call i8*@sml_alloc(i32 inreg 28)#0
%p=getelementptr inbounds i8,i8*%o,i64 -4
%q=bitcast i8*%p to i32*
store i32 1342177304,i32*%q,align 4
%r=load i8*,i8**%b,align 8
%s=bitcast i8*%o to i8**
store i8*%r,i8**%s,align 8
%t=getelementptr inbounds i8,i8*%o,i64 8
%u=bitcast i8*%t to void(...)**
store void(...)*bitcast(float(i8*,i8*)*@_SMLLN6Real324Math3powE_97 to void(...)*),void(...)**%u,align 8
%v=getelementptr inbounds i8,i8*%o,i64 16
%w=bitcast i8*%v to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324Math3powE_233 to void(...)*),void(...)**%w,align 8
%x=getelementptr inbounds i8,i8*%o,i64 24
%y=bitcast i8*%x to i32*
store i32 -2147483647,i32*%y,align 4
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar629da514a4193178_Real32,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar629da514a4193178_Real32,i64 0,i32 2,i64 0),i8*inreg%o)#0
store float 0x7FF0000000000000,float*@_SMLZN6Real326posInfE,align 4
store float 0xFFF0000000000000,float*@_SMLZN6Real326negInfE,align 4
call void@sml_end()#0
ret void
}
define internal fastcc float@_SMLLN6Real324Math3powE_97(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
k:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%b,%k]
store i8*null,i8**%d,align 8
%l=bitcast i8*%j to float*
%m=load float,float*%l,align 4
%n=getelementptr inbounds i8,i8*%j,i64 4
%o=bitcast i8*%n to float*
%p=load float,float*%o,align 4
%q=bitcast float%p to i32
%r=call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%q)
%s=call fastcc i32@_SMLFN18SMLSharp__RealClass5isInfE(i32 inreg%r)
%t=icmp eq i32%s,0
br i1%t,label%E,label%u
u:
%v=fcmp une float%m,1.000000e+00
%w=fcmp une float%m,-1.000000e+00
%x=and i1%v,%w
br i1%x,label%C,label%y
y:
%z=bitcast i8**%c to float**
%A=load float*,float**%z,align 8
%B=load float,float*%A,align 4
ret float%B
C:
%D=call float@powf(float%m,float%p)
ret float%D
E:
%F=call float@powf(float%m,float%p)
ret float%F
}
define fastcc float@_SMLFN6Real322_J_KE(i8*inreg%a)#4 gc"smlsharp"{
%b=bitcast i8*%a to float*
%c=load float,float*%b,align 4
%d=getelementptr inbounds i8,i8*%a,i64 4
%e=bitcast i8*%d to float*
%f=load float,float*%e,align 4
%g=getelementptr inbounds i8,i8*%a,i64 8
%h=bitcast i8*%g to float*
%i=load float,float*%h,align 4
%j=fmul float%c,%f
%k=fadd float%j,%i
ret float%k
}
define fastcc float@_SMLFN6Real322_J_ME(i8*inreg%a)#4 gc"smlsharp"{
%b=bitcast i8*%a to float*
%c=load float,float*%b,align 4
%d=getelementptr inbounds i8,i8*%a,i64 4
%e=bitcast i8*%d to float*
%f=load float,float*%e,align 4
%g=getelementptr inbounds i8,i8*%a,i64 8
%h=bitcast i8*%g to float*
%i=load float,float*%h,align 4
%j=fmul float%c,%f
%k=fsub float%j,%i
ret float%k
}
define fastcc float@_SMLFN6Real323minE(i8*inreg%a)#4 gc"smlsharp"{
j:
%b=bitcast i8*%a to float*
%c=load float,float*%b,align 4
%d=getelementptr inbounds i8,i8*%a,i64 4
%e=bitcast i8*%d to float*
%f=load float,float*%e,align 4
%g=fcmp ord float%c,0.000000e+00
br i1%g,label%k,label%h
h:
%i=phi float[%f,%j],[%c,%k],[%o,%m]
ret float%i
k:
%l=fcmp ord float%f,0.000000e+00
br i1%l,label%m,label%h
m:
%n=fcmp ole float%c,%f
%o=select i1%n,float%c,float%f
br label%h
}
define fastcc float@_SMLFN6Real323maxE(i8*inreg%a)#4 gc"smlsharp"{
j:
%b=bitcast i8*%a to float*
%c=load float,float*%b,align 4
%d=getelementptr inbounds i8,i8*%a,i64 4
%e=bitcast i8*%d to float*
%f=load float,float*%e,align 4
%g=fcmp ord float%c,0.000000e+00
br i1%g,label%k,label%h
h:
%i=phi float[%f,%j],[%c,%k],[%o,%m]
ret float%i
k:
%l=fcmp ord float%f,0.000000e+00
br i1%l,label%m,label%h
m:
%n=fcmp ole float%c,%f
%o=select i1%n,float%f,float%c
br label%h
}
define fastcc i32@_SMLFN6Real328sameSignE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%e,label%g
e:
%f=bitcast i8*%a to i32*
br label%j
g:
call void@sml_check(i32 inreg%c)
%h=bitcast i8**%b to i32**
%i=load i32*,i32**%h,align 8
br label%j
j:
%k=phi i32*[%i,%g],[%f,%e]
%l=load i32,i32*%k,align 4
%m=call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%l)
%n=call fastcc i32@_SMLFN18SMLSharp__RealClass7signBitE(i32 inreg%m)
%o=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%p=getelementptr inbounds i8,i8*%o,i64 4
%q=bitcast i8*%p to i32*
%r=load i32,i32*%q,align 4
%s=call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%r)
%t=call fastcc i32@_SMLFN18SMLSharp__RealClass7signBitE(i32 inreg%s)
%u=icmp eq i32%n,%t
%v=zext i1%u to i32
ret i32%v
}
define fastcc i32@_SMLFN6Real3211compareRealE(i8*inreg%a)#4 gc"smlsharp"{
j:
%b=bitcast i8*%a to float*
%c=load float,float*%b,align 4
%d=getelementptr inbounds i8,i8*%a,i64 4
%e=bitcast i8*%d to float*
%f=load float,float*%e,align 4
%g=fcmp uge float%c,%f
br i1%g,label%k,label%h
h:
%i=phi i32[2,%j],[1,%k],[%o,%m]
ret i32%i
k:
%l=fcmp ule float%c,%f
br i1%l,label%m,label%h
m:
%n=fcmp une float%c,%f
%o=select i1%n,i32 3,i32 0
br label%h
}
define fastcc i32@_SMLFN6Real327compareE(i8*inreg%a)#2 gc"smlsharp"{
j:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%h,label%f
f:
call void@sml_check(i32 inreg%d)
%g=load i8*,i8**%b,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
store i8*null,i8**%b,align 8
%k=bitcast i8*%i to float*
%l=load float,float*%k,align 4
%m=getelementptr inbounds i8,i8*%i,i64 4
%n=bitcast i8*%m to float*
%o=load float,float*%n,align 4
%p=call i8*@sml_alloc(i32 inreg 12)#0
%q=getelementptr inbounds i8,i8*%p,i64 -4
%r=bitcast i8*%q to i32*
store i32 1342177288,i32*%r,align 4
%s=bitcast i8*%p to float*
store float%l,float*%s,align 4
%t=getelementptr inbounds i8,i8*%p,i64 4
%u=bitcast i8*%t to float*
store float%o,float*%u,align 4
%v=getelementptr inbounds i8,i8*%p,i64 8
%w=bitcast i8*%v to i32*
store i32 0,i32*%w,align 4
%x=call fastcc i32@_SMLFN6Real3211compareRealE(i8*inreg%p)
switch i32%x,label%y[
i32 2,label%ai
i32 0,label%ai
i32 1,label%ai
i32 3,label%Q
]
y:
call void@sml_matchcomp_bug()
%z=load i8*,i8**@_SMLZ5Match,align 8
store i8*%z,i8**%b,align 8
%A=call i8*@sml_alloc(i32 inreg 20)#0
%B=getelementptr inbounds i8,i8*%A,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177296,i32*%C,align 4
store i8*%A,i8**%c,align 8
%D=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%E=bitcast i8*%A to i8**
store i8*%D,i8**%E,align 8
%F=getelementptr inbounds i8,i8*%A,i64 8
%G=bitcast i8*%F to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@h,i64 0,i32 2,i64 0),i8**%G,align 8
%H=getelementptr inbounds i8,i8*%A,i64 16
%I=bitcast i8*%H to i32*
store i32 3,i32*%I,align 4
%J=call i8*@sml_alloc(i32 inreg 60)#0
%K=getelementptr inbounds i8,i8*%J,i64 -4
%L=bitcast i8*%K to i32*
store i32 1342177336,i32*%L,align 4
%M=getelementptr inbounds i8,i8*%J,i64 56
%N=bitcast i8*%M to i32*
store i32 1,i32*%N,align 4
%O=load i8*,i8**%c,align 8
%P=bitcast i8*%J to i8**
store i8*%O,i8**%P,align 8
call void@sml_raise(i8*inreg%J)#1
unreachable
Q:
%R=load i8*,i8**@_SMLZN8IEEEReal9UnorderedE,align 8
store i8*%R,i8**%b,align 8
%S=call i8*@sml_alloc(i32 inreg 20)#0
%T=getelementptr inbounds i8,i8*%S,i64 -4
%U=bitcast i8*%T to i32*
store i32 1342177296,i32*%U,align 4
store i8*%S,i8**%c,align 8
%V=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%W=bitcast i8*%S to i8**
store i8*%V,i8**%W,align 8
%X=getelementptr inbounds i8,i8*%S,i64 8
%Y=bitcast i8*%X to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@g,i64 0,i32 2,i64 0),i8**%Y,align 8
%Z=getelementptr inbounds i8,i8*%S,i64 16
%aa=bitcast i8*%Z to i32*
store i32 3,i32*%aa,align 4
%ab=call i8*@sml_alloc(i32 inreg 60)#0
%ac=getelementptr inbounds i8,i8*%ab,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177336,i32*%ad,align 4
%ae=getelementptr inbounds i8,i8*%ab,i64 56
%af=bitcast i8*%ae to i32*
store i32 1,i32*%af,align 4
%ag=load i8*,i8**%c,align 8
%ah=bitcast i8*%ab to i8**
store i8*%ag,i8**%ah,align 8
call void@sml_raise(i8*inreg%ab)#1
unreachable
ai:
ret i32%x
}
define fastcc i8*@_SMLFN6Real328toManExpE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 536870916,i32*%j,align 4
store i32 0,i32*%h,align 4
%k=tail call float@frexpf(float%f,i8*%g)
%l=load i32,i32*%h,align 4
%m=tail call i8*@sml_alloc(i32 inreg 12)#0
%n=bitcast i8*%m to i32*
%o=getelementptr inbounds i8,i8*%m,i64 -4
%p=bitcast i8*%o to i32*
store i32 1342177288,i32*%p,align 4
store i32%l,i32*%n,align 4
%q=getelementptr inbounds i8,i8*%m,i64 4
%r=bitcast i8*%q to float*
store float%k,float*%r,align 4
%s=getelementptr inbounds i8,i8*%m,i64 8
%t=bitcast i8*%s to i32*
store i32 0,i32*%t,align 4
ret i8*%m
}
define fastcc i8*@_SMLFN6Real325splitE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=getelementptr inbounds i8,i8*%g,i64 -4
%i=bitcast i8*%h to i32*
store i32 536870916,i32*%i,align 4
%j=bitcast i8*%g to float*
store float 0.000000e+00,float*%j,align 4
%k=tail call float@modff(float%f,i8*%g)
%l=load float,float*%j,align 4
%m=tail call i8*@sml_alloc(i32 inreg 12)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177288,i32*%o,align 4
%p=bitcast i8*%m to float*
store float%k,float*%p,align 4
%q=getelementptr inbounds i8,i8*%m,i64 4
%r=bitcast i8*%q to float*
store float%l,float*%r,align 4
%s=getelementptr inbounds i8,i8*%m,i64 8
%t=bitcast i8*%s to i32*
store i32 0,i32*%t,align 4
ret i8*%m
}
define fastcc float@_SMLFN6Real329nextAfterE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=bitcast i8*%h to float*
%k=load float,float*%j,align 4
%l=getelementptr inbounds i8,i8*%h,i64 4
%m=bitcast i8*%l to float*
%n=load float,float*%m,align 4
%o=bitcast float%k to i32
%p=call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%o)
%q=call fastcc i32@_SMLFN18SMLSharp__RealClass5classE(i32 inreg%p)
%r=bitcast float%n to i32
%s=call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%r)
%t=call fastcc i32@_SMLFN18SMLSharp__RealClass5classE(i32 inreg%s)
%u=call i8*@sml_alloc(i32 inreg 12)#0
%v=bitcast i8*%u to i32*
%w=getelementptr inbounds i8,i8*%u,i64 -4
%x=bitcast i8*%w to i32*
store i32 1342177288,i32*%x,align 4
store i32%q,i32*%v,align 4
%y=getelementptr inbounds i8,i8*%u,i64 4
%z=bitcast i8*%y to i32*
store i32%t,i32*%z,align 4
%A=getelementptr inbounds i8,i8*%u,i64 8
%B=bitcast i8*%A to i32*
store i32 0,i32*%B,align 4
%C=icmp eq i32%q,0
br i1%C,label%F,label%D
D:
%E=call float@nextafterf(float%k,float%n)
ret float%E
F:
%G=icmp eq i32%t,1
br i1%G,label%I,label%H
H:
ret float%k
I:
%J=call float@nextafterf(float%k,float%n)
ret float%J
}
define internal fastcc float@_SMLLN6Real3211floorOrCeilE_120(i32 inreg%a)unnamed_addr#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%h=tail call fastcc i32@_SMLFN18SMLSharp__RealClass7signBitE(i32 inreg%g)
%i=icmp eq i32%h,0
br i1%i,label%l,label%j
j:
%k=tail call float@floorf(float%f)
ret float%k
l:
%m=tail call float@ceilf(float%f)
ret float%m
}
define fastcc float@_SMLFN6Real329realRoundE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i8*@_SMLFN6Real325splitE(i32 inreg%a)
%g=getelementptr inbounds i8,i8*%f,i64 4
%h=bitcast i8*%g to float*
%i=load float,float*%h,align 4
%j=bitcast i8*%f to float*
%k=load float,float*%j,align 4
%l=tail call float@llvm.fabs.f32(float%k)#0
%m=fcmp uge float%l,5.000000e-01
br i1%m,label%o,label%n
n:
ret float%i
o:
%p=fcmp ule float%l,5.000000e-01
br i1%p,label%s,label%q
q:
%r=tail call fastcc float@_SMLLN6Real3211floorOrCeilE_120(i32 inreg%a)
ret float%r
s:
%t=frem float%i,2.000000e+00
%u=fcmp une float%t,0.000000e+00
br i1%u,label%v,label%n
v:
%w=tail call fastcc float@_SMLLN6Real3211floorOrCeilE_120(i32 inreg%a)
ret float%w
}
define internal fastcc i32@_SMLLN6Real325toIntE_133(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i32*
br label%l
i:
call void@sml_check(i32 inreg%e)
%j=bitcast i8**%c to i32**
%k=load i32*,i32**%j,align 8
br label%l
l:
%m=phi i32*[%k,%i],[%h,%g]
%n=bitcast i32%b to float
%o=load i32,i32*%m,align 4
switch i32%o,label%p[
i32 0,label%b1
i32 1,label%bi
i32 2,label%az
i32 3,label%H
]
p:
call void@sml_matchcomp_bug()
%q=load i8*,i8**@_SMLZ5Match,align 8
store i8*%q,i8**%c,align 8
%r=call i8*@sml_alloc(i32 inreg 20)#0
%s=getelementptr inbounds i8,i8*%r,i64 -4
%t=bitcast i8*%s to i32*
store i32 1342177296,i32*%t,align 4
store i8*%r,i8**%d,align 8
%u=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%v=bitcast i8*%r to i8**
store i8*%u,i8**%v,align 8
%w=getelementptr inbounds i8,i8*%r,i64 8
%x=bitcast i8*%w to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@o,i64 0,i32 2,i64 0),i8**%x,align 8
%y=getelementptr inbounds i8,i8*%r,i64 16
%z=bitcast i8*%y to i32*
store i32 3,i32*%z,align 4
%A=call i8*@sml_alloc(i32 inreg 60)#0
%B=getelementptr inbounds i8,i8*%A,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177336,i32*%C,align 4
%D=getelementptr inbounds i8,i8*%A,i64 56
%E=bitcast i8*%D to i32*
store i32 1,i32*%E,align 4
%F=load i8*,i8**%d,align 8
%G=bitcast i8*%A to i8**
store i8*%F,i8**%G,align 8
call void@sml_raise(i8*inreg%A)#1
unreachable
H:
%I=fcmp ord float%n,0.000000e+00
br i1%I,label%ab,label%J
J:
%K=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%K,i8**%c,align 8
%L=call i8*@sml_alloc(i32 inreg 20)#0
%M=getelementptr inbounds i8,i8*%L,i64 -4
%N=bitcast i8*%M to i32*
store i32 1342177296,i32*%N,align 4
store i8*%L,i8**%d,align 8
%O=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%P=bitcast i8*%L to i8**
store i8*%O,i8**%P,align 8
%Q=getelementptr inbounds i8,i8*%L,i64 8
%R=bitcast i8*%Q to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@n,i64 0,i32 2,i64 0),i8**%R,align 8
%S=getelementptr inbounds i8,i8*%L,i64 16
%T=bitcast i8*%S to i32*
store i32 3,i32*%T,align 4
%U=call i8*@sml_alloc(i32 inreg 60)#0
%V=getelementptr inbounds i8,i8*%U,i64 -4
%W=bitcast i8*%V to i32*
store i32 1342177336,i32*%W,align 4
%X=getelementptr inbounds i8,i8*%U,i64 56
%Y=bitcast i8*%X to i32*
store i32 1,i32*%Y,align 4
%Z=load i8*,i8**%d,align 8
%aa=bitcast i8*%U to i8**
store i8*%Z,i8**%aa,align 8
call void@sml_raise(i8*inreg%U)#1
unreachable
ab:
%ac=fcmp ult float%n,0xC1E0000000000000
%ad=fcmp ugt float%n,0x41DFFFFFE0000000
%ae=or i1%ac,%ad
br i1%ae,label%ah,label%af
af:
%ag=fptosi float%n to i32
ret i32%ag
ah:
%ai=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%ai,i8**%c,align 8
%aj=call i8*@sml_alloc(i32 inreg 20)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177296,i32*%al,align 4
store i8*%aj,i8**%d,align 8
%am=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%an=bitcast i8*%aj to i8**
store i8*%am,i8**%an,align 8
%ao=getelementptr inbounds i8,i8*%aj,i64 8
%ap=bitcast i8*%ao to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@n,i64 0,i32 2,i64 0),i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%aj,i64 16
%ar=bitcast i8*%aq to i32*
store i32 3,i32*%ar,align 4
%as=call i8*@sml_alloc(i32 inreg 60)#0
%at=getelementptr inbounds i8,i8*%as,i64 -4
%au=bitcast i8*%at to i32*
store i32 1342177336,i32*%au,align 4
%av=getelementptr inbounds i8,i8*%as,i64 56
%aw=bitcast i8*%av to i32*
store i32 1,i32*%aw,align 4
%ax=load i8*,i8**%d,align 8
%ay=bitcast i8*%as to i8**
store i8*%ax,i8**%ay,align 8
call void@sml_raise(i8*inreg%as)#1
unreachable
az:
%aA=call float@ceilf(float%n)
%aB=fcmp ord float%aA,0.000000e+00
br i1%aB,label%aU,label%aC
aC:
%aD=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%aD,i8**%c,align 8
%aE=call i8*@sml_alloc(i32 inreg 20)#0
%aF=getelementptr inbounds i8,i8*%aE,i64 -4
%aG=bitcast i8*%aF to i32*
store i32 1342177296,i32*%aG,align 4
store i8*%aE,i8**%d,align 8
%aH=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aI=bitcast i8*%aE to i8**
store i8*%aH,i8**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aE,i64 8
%aK=bitcast i8*%aJ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@V,i64 0,i32 2,i64 0),i8**%aK,align 8
%aL=getelementptr inbounds i8,i8*%aE,i64 16
%aM=bitcast i8*%aL to i32*
store i32 3,i32*%aM,align 4
%aN=call i8*@sml_alloc(i32 inreg 60)#0
%aO=getelementptr inbounds i8,i8*%aN,i64 -4
%aP=bitcast i8*%aO to i32*
store i32 1342177336,i32*%aP,align 4
%aQ=getelementptr inbounds i8,i8*%aN,i64 56
%aR=bitcast i8*%aQ to i32*
store i32 1,i32*%aR,align 4
%aS=load i8*,i8**%d,align 8
%aT=bitcast i8*%aN to i8**
store i8*%aS,i8**%aT,align 8
call void@sml_raise(i8*inreg%aN)#1
unreachable
aU:
%aV=fcmp ult float%aA,0xC1E0000000000000
%aW=fcmp ugt float%aA,0x41DFFFFFE0000000
%aX=or i1%aV,%aW
br i1%aX,label%a0,label%aY
aY:
%aZ=fptosi float%aA to i32
ret i32%aZ
a0:
%a1=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%a1,i8**%c,align 8
%a2=call i8*@sml_alloc(i32 inreg 20)#0
%a3=getelementptr inbounds i8,i8*%a2,i64 -4
%a4=bitcast i8*%a3 to i32*
store i32 1342177296,i32*%a4,align 4
store i8*%a2,i8**%d,align 8
%a5=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a6=bitcast i8*%a2 to i8**
store i8*%a5,i8**%a6,align 8
%a7=getelementptr inbounds i8,i8*%a2,i64 8
%a8=bitcast i8*%a7 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@V,i64 0,i32 2,i64 0),i8**%a8,align 8
%a9=getelementptr inbounds i8,i8*%a2,i64 16
%ba=bitcast i8*%a9 to i32*
store i32 3,i32*%ba,align 4
%bb=call i8*@sml_alloc(i32 inreg 60)#0
%bc=getelementptr inbounds i8,i8*%bb,i64 -4
%bd=bitcast i8*%bc to i32*
store i32 1342177336,i32*%bd,align 4
%be=getelementptr inbounds i8,i8*%bb,i64 56
%bf=bitcast i8*%be to i32*
store i32 1,i32*%bf,align 4
%bg=load i8*,i8**%d,align 8
%bh=bitcast i8*%bb to i8**
store i8*%bg,i8**%bh,align 8
call void@sml_raise(i8*inreg%bb)#1
unreachable
bi:
%bj=call float@floorf(float%n)
%bk=fcmp ord float%bj,0.000000e+00
br i1%bk,label%bD,label%bl
bl:
%bm=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%bm,i8**%c,align 8
%bn=call i8*@sml_alloc(i32 inreg 20)#0
%bo=getelementptr inbounds i8,i8*%bn,i64 -4
%bp=bitcast i8*%bo to i32*
store i32 1342177296,i32*%bp,align 4
store i8*%bn,i8**%d,align 8
%bq=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%br=bitcast i8*%bn to i8**
store i8*%bq,i8**%br,align 8
%bs=getelementptr inbounds i8,i8*%bn,i64 8
%bt=bitcast i8*%bs to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@T,i64 0,i32 2,i64 0),i8**%bt,align 8
%bu=getelementptr inbounds i8,i8*%bn,i64 16
%bv=bitcast i8*%bu to i32*
store i32 3,i32*%bv,align 4
%bw=call i8*@sml_alloc(i32 inreg 60)#0
%bx=getelementptr inbounds i8,i8*%bw,i64 -4
%by=bitcast i8*%bx to i32*
store i32 1342177336,i32*%by,align 4
%bz=getelementptr inbounds i8,i8*%bw,i64 56
%bA=bitcast i8*%bz to i32*
store i32 1,i32*%bA,align 4
%bB=load i8*,i8**%d,align 8
%bC=bitcast i8*%bw to i8**
store i8*%bB,i8**%bC,align 8
call void@sml_raise(i8*inreg%bw)#1
unreachable
bD:
%bE=fcmp ult float%bj,0xC1E0000000000000
%bF=fcmp ugt float%bj,0x41DFFFFFE0000000
%bG=or i1%bE,%bF
br i1%bG,label%bJ,label%bH
bH:
%bI=fptosi float%bj to i32
ret i32%bI
bJ:
%bK=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%bK,i8**%c,align 8
%bL=call i8*@sml_alloc(i32 inreg 20)#0
%bM=getelementptr inbounds i8,i8*%bL,i64 -4
%bN=bitcast i8*%bM to i32*
store i32 1342177296,i32*%bN,align 4
store i8*%bL,i8**%d,align 8
%bO=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bP=bitcast i8*%bL to i8**
store i8*%bO,i8**%bP,align 8
%bQ=getelementptr inbounds i8,i8*%bL,i64 8
%bR=bitcast i8*%bQ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@T,i64 0,i32 2,i64 0),i8**%bR,align 8
%bS=getelementptr inbounds i8,i8*%bL,i64 16
%bT=bitcast i8*%bS to i32*
store i32 3,i32*%bT,align 4
%bU=call i8*@sml_alloc(i32 inreg 60)#0
%bV=getelementptr inbounds i8,i8*%bU,i64 -4
%bW=bitcast i8*%bV to i32*
store i32 1342177336,i32*%bW,align 4
%bX=getelementptr inbounds i8,i8*%bU,i64 56
%bY=bitcast i8*%bX to i32*
store i32 1,i32*%bY,align 4
%bZ=load i8*,i8**%d,align 8
%b0=bitcast i8*%bU to i8**
store i8*%bZ,i8**%b0,align 8
call void@sml_raise(i8*inreg%bU)#1
unreachable
b1:
%b2=call fastcc float@_SMLFN6Real329realRoundE(i32 inreg%b)
%b3=fcmp ord float%b2,0.000000e+00
br i1%b3,label%cm,label%b4
b4:
%b5=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%b5,i8**%c,align 8
%b6=call i8*@sml_alloc(i32 inreg 20)#0
%b7=getelementptr inbounds i8,i8*%b6,i64 -4
%b8=bitcast i8*%b7 to i32*
store i32 1342177296,i32*%b8,align 4
store i8*%b6,i8**%d,align 8
%b9=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ca=bitcast i8*%b6 to i8**
store i8*%b9,i8**%ca,align 8
%cb=getelementptr inbounds i8,i8*%b6,i64 8
%cc=bitcast i8*%cb to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@X,i64 0,i32 2,i64 0),i8**%cc,align 8
%cd=getelementptr inbounds i8,i8*%b6,i64 16
%ce=bitcast i8*%cd to i32*
store i32 3,i32*%ce,align 4
%cf=call i8*@sml_alloc(i32 inreg 60)#0
%cg=getelementptr inbounds i8,i8*%cf,i64 -4
%ch=bitcast i8*%cg to i32*
store i32 1342177336,i32*%ch,align 4
%ci=getelementptr inbounds i8,i8*%cf,i64 56
%cj=bitcast i8*%ci to i32*
store i32 1,i32*%cj,align 4
%ck=load i8*,i8**%d,align 8
%cl=bitcast i8*%cf to i8**
store i8*%ck,i8**%cl,align 8
call void@sml_raise(i8*inreg%cf)#1
unreachable
cm:
%cn=fcmp ult float%b2,0xC1E0000000000000
%co=fcmp ugt float%b2,0x41DFFFFFE0000000
%cp=or i1%cn,%co
br i1%cp,label%cs,label%cq
cq:
%cr=fptosi float%b2 to i32
ret i32%cr
cs:
%ct=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%ct,i8**%c,align 8
%cu=call i8*@sml_alloc(i32 inreg 20)#0
%cv=getelementptr inbounds i8,i8*%cu,i64 -4
%cw=bitcast i8*%cv to i32*
store i32 1342177296,i32*%cw,align 4
store i8*%cu,i8**%d,align 8
%cx=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cy=bitcast i8*%cu to i8**
store i8*%cx,i8**%cy,align 8
%cz=getelementptr inbounds i8,i8*%cu,i64 8
%cA=bitcast i8*%cz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@X,i64 0,i32 2,i64 0),i8**%cA,align 8
%cB=getelementptr inbounds i8,i8*%cu,i64 16
%cC=bitcast i8*%cB to i32*
store i32 3,i32*%cC,align 4
%cD=call i8*@sml_alloc(i32 inreg 60)#0
%cE=getelementptr inbounds i8,i8*%cD,i64 -4
%cF=bitcast i8*%cE to i32*
store i32 1342177336,i32*%cF,align 4
%cG=getelementptr inbounds i8,i8*%cD,i64 56
%cH=bitcast i8*%cG to i32*
store i32 1,i32*%cH,align 4
%cI=load i8*,i8**%d,align 8
%cJ=bitcast i8*%cD to i8**
store i8*%cI,i8**%cJ,align 8
call void@sml_raise(i8*inreg%cD)#1
unreachable
}
define fastcc i8*@_SMLFN6Real325toIntE(i32 inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
%c=call i8*@sml_alloc(i32 inreg 12)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%c,i8**%b,align 8
store i32%a,i32*%d,align 4
%g=getelementptr inbounds i8,i8*%c,i64 8
%h=bitcast i8*%g to i32*
store i32 0,i32*%h,align 4
%i=call i8*@sml_alloc(i32 inreg 28)#0
%j=getelementptr inbounds i8,i8*%i,i64 -4
%k=bitcast i8*%j to i32*
store i32 1342177304,i32*%k,align 4
%l=load i8*,i8**%b,align 8
%m=bitcast i8*%i to i8**
store i8*%l,i8**%m,align 8
%n=getelementptr inbounds i8,i8*%i,i64 8
%o=bitcast i8*%n to void(...)**
store void(...)*bitcast(i32(i8*,i32)*@_SMLLN6Real325toIntE_133 to void(...)*),void(...)**%o,align 8
%p=getelementptr inbounds i8,i8*%i,i64 16
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real325toIntE_246 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%i,i64 24
%s=bitcast i8*%r to i32*
store i32 -2147483647,i32*%s,align 4
ret i8*%i
}
define internal fastcc i8*@_SMLLN6Real324scanE_136(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%j,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%e,align 8
br label%j
j:
%k=phi i8*[%i,%h],[%a,%l]
%m=getelementptr inbounds i8,i8*%k,i64 12
%n=bitcast i8*%m to i32*
%o=load i32,i32*%n,align 4
%p=add i32%o,7
%q=sub i32 0,%o
%r=and i32%p,%q
%s=add i32%o,3
%t=and i32%s,%q
%u=add i32%p,%t
%v=and i32%u,-8
%w=lshr i32%t,3
%x=getelementptr inbounds i8,i8*%k,i64 8
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=shl i32%z,%w
%B=or i32%v,4
%C=call fastcc i8*@_SMLFN6Real644scanE(i32 inreg%z,i32 inreg%o)
%D=getelementptr inbounds i8,i8*%C,i64 16
%E=bitcast i8*%D to i8*(i8*,i8*)**
%F=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%E,align 8
%G=bitcast i8*%C to i8**
%H=load i8*,i8**%G,align 8
%I=bitcast i8**%e to i8***
%J=load i8**,i8***%I,align 8
%K=load i8*,i8**%J,align 8
%L=call fastcc i8*%F(i8*inreg%H,i8*inreg%K)
%M=getelementptr inbounds i8,i8*%L,i64 16
%N=bitcast i8*%M to i8*(i8*,i8*)**
%O=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%N,align 8
%P=bitcast i8*%L to i8**
%Q=load i8*,i8**%P,align 8
%R=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%S=call fastcc i8*%O(i8*inreg%Q,i8*inreg%R)
%T=icmp eq i8*%S,null
br i1%T,label%U,label%V
U:
ret i8*null
V:
%W=bitcast i8*%S to i8**
%X=load i8*,i8**%W,align 8
store i8*%X,i8**%c,align 8
%Y=load i8*,i8**%e,align 8
%Z=getelementptr inbounds i8,i8*%Y,i64 8
%aa=bitcast i8*%Z to i32*
%ab=load i32,i32*%aa,align 4
%ac=icmp eq i32%ab,0
br i1%ac,label%ai,label%ad
ad:
%ae=sext i32%r to i64
%af=getelementptr inbounds i8,i8*%X,i64%ae
%ag=bitcast i8*%af to i8**
%ah=load i8*,i8**%ag,align 8
br label%aw
ai:
%aj=getelementptr inbounds i8,i8*%Y,i64 12
%ak=bitcast i8*%aj to i32*
%al=load i32,i32*%ak,align 4
%am=call i8*@sml_alloc(i32 inreg%al)#0
%an=getelementptr inbounds i8,i8*%am,i64 -4
%ao=bitcast i8*%an to i32*
store i32%al,i32*%ao,align 4
%ap=load i8*,i8**%c,align 8
%aq=sext i32%r to i64
%ar=getelementptr inbounds i8,i8*%ap,i64%aq
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%am,i8*%ar,i32%al,i1 false)
%as=load i8*,i8**%e,align 8
%at=getelementptr inbounds i8,i8*%as,i64 8
%au=bitcast i8*%at to i32*
%av=load i32,i32*%au,align 4
br label%aw
aw:
%ax=phi i32[%av,%ai],[%ab,%ad]
%ay=phi i8*[%as,%ai],[%Y,%ad]
%az=phi i8*[%ap,%ai],[%X,%ad]
%aA=phi i8*[%am,%ai],[%ah,%ad]
%aB=bitcast i8*%az to double*
store i8*%aA,i8**%d,align 8
store i8*null,i8**%c,align 8
%aC=load double,double*%aB,align 8
%aD=fptrunc double%aC to float
%aE=getelementptr inbounds i8,i8*%ay,i64 12
%aF=bitcast i8*%aE to i32*
%aG=load i32,i32*%aF,align 4
store i8*null,i8**%e,align 8
%aH=call i8*@sml_alloc(i32 inreg%B)#0
%aI=or i32%v,1342177280
%aJ=getelementptr inbounds i8,i8*%aH,i64 -4
%aK=bitcast i8*%aJ to i32*
store i32%aI,i32*%aK,align 4
store i8*%aH,i8**%c,align 8
call void@llvm.memset.p0i8.i32(i8*%aH,i8 0,i32%B,i1 false)
%aL=bitcast i8*%aH to float*
store float%aD,float*%aL,align 4
%aM=icmp eq i32%ax,0
%aN=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aO=sext i32%t to i64
%aP=getelementptr inbounds i8,i8*%aH,i64%aO
br i1%aM,label%aS,label%aQ
aQ:
%aR=bitcast i8*%aP to i8**
store i8*%aN,i8**%aR,align 8
br label%aT
aS:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%aP,i8*%aN,i32%aG,i1 false)
br label%aT
aT:
%aU=sext i32%v to i64
%aV=getelementptr inbounds i8,i8*%aH,i64%aU
%aW=bitcast i8*%aV to i32*
store i32%A,i32*%aW,align 4
%aX=call i8*@sml_alloc(i32 inreg 12)#0
%aY=getelementptr inbounds i8,i8*%aX,i64 -4
%aZ=bitcast i8*%aY to i32*
store i32 1342177288,i32*%aZ,align 4
%a0=load i8*,i8**%c,align 8
%a1=bitcast i8*%aX to i8**
store i8*%a0,i8**%a1,align 8
%a2=getelementptr inbounds i8,i8*%aX,i64 8
%a3=bitcast i8*%a2 to i32*
store i32 1,i32*%a3,align 4
ret i8*%aX
}
define internal fastcc i8*@_SMLLN6Real324scanE_137(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%b,i8**%c,align 8
%e=bitcast i8*%a to i32*
%f=load i32,i32*%e,align 4
%g=getelementptr inbounds i8,i8*%a,i64 4
%h=bitcast i8*%g to i32*
%i=load i32,i32*%h,align 4
%j=call i8*@sml_alloc(i32 inreg 20)#0
%k=getelementptr inbounds i8,i8*%j,i64 -4
%l=bitcast i8*%k to i32*
store i32 1342177296,i32*%l,align 4
store i8*%j,i8**%d,align 8
%m=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%n=bitcast i8*%j to i8**
store i8*%m,i8**%n,align 8
%o=getelementptr inbounds i8,i8*%j,i64 8
%p=bitcast i8*%o to i32*
store i32%f,i32*%p,align 4
%q=getelementptr inbounds i8,i8*%j,i64 12
%r=bitcast i8*%q to i32*
store i32%i,i32*%r,align 4
%s=getelementptr inbounds i8,i8*%j,i64 16
%t=bitcast i8*%s to i32*
store i32 1,i32*%t,align 4
%u=call i8*@sml_alloc(i32 inreg 28)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177304,i32*%w,align 4
%x=load i8*,i8**%d,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%u,i64 8
%A=bitcast i8*%z to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324scanE_136 to void(...)*),void(...)**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324scanE_136 to void(...)*),void(...)**%C,align 8
%D=getelementptr inbounds i8,i8*%u,i64 24
%E=bitcast i8*%D to i32*
store i32 1,i32*%E,align 4
ret i8*%u
}
define internal fastcc i8*@_SMLLN6Real324scanE_138(i32 inreg%a,i32 inreg%b)unnamed_addr#4 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 1342177288,i32*%g,align 4
store i8*%d,i8**%c,align 8
store i32%a,i32*%e,align 4
%h=getelementptr inbounds i8,i8*%d,i64 4
%i=bitcast i8*%h to i32*
store i32%b,i32*%i,align 4
%j=getelementptr inbounds i8,i8*%d,i64 8
%k=bitcast i8*%j to i32*
store i32 0,i32*%k,align 4
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177304,i32*%n,align 4
%o=load i8*,i8**%c,align 8
%p=bitcast i8*%l to i8**
store i8*%o,i8**%p,align 8
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324scanE_137 to void(...)*),void(...)**%r,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324scanE_137 to void(...)*),void(...)**%t,align 8
%u=getelementptr inbounds i8,i8*%l,i64 24
%v=bitcast i8*%u to i32*
store i32 -2147483647,i32*%v,align 4
ret i8*%l
}
define fastcc float@_SMLFN6Real324Math4sqrtE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@sqrtf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math3sinE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@sinf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math3cosE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@cosf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math3tanE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@tanf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math4asinE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@asinf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math4acosE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@acosf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math4atanE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@atanf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math5atan2E(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=bitcast i8*%h to float*
%k=load float,float*%j,align 4
%l=getelementptr inbounds i8,i8*%h,i64 4
%m=bitcast i8*%l to float*
%n=load float,float*%m,align 4
%o=call float@atan2f(float%k,float%n)
ret float%o
}
define fastcc float@_SMLFN6Real324Math3expE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@expf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math3powE(i8*inreg%a)local_unnamed_addr#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar629da514a4193178_Real32,i64 0,i32 2,i64 0)to i8***),align 8
%k=load i8*,i8**%j,align 8
%l=tail call fastcc float@_SMLLN6Real324Math3powE_97(i8*inreg%k,i8*inreg%h)
ret float%l
}
define fastcc float@_SMLFN6Real324Math2lnE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@logf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math5log10E(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@log10f(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math4sinhE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@sinhf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math4coshE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@coshf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real324Math4tanhE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@tanhf(float%f)
ret float%g
}
define fastcc i32@_SMLFN6Real324signE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%g=tail call fastcc i32@_SMLFN18SMLSharp__RealClass4signE(i32 inreg%f)
ret i32%g
}
define fastcc i32@_SMLFN6Real327signBitE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%g=tail call fastcc i32@_SMLFN18SMLSharp__RealClass7signBitE(i32 inreg%f)
ret i32%g
}
define fastcc float@_SMLFN6Real328copySignE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=bitcast i8*%h to float*
%k=load float,float*%j,align 4
%l=getelementptr inbounds i8,i8*%h,i64 4
%m=bitcast i8*%l to float*
%n=load float,float*%m,align 4
%o=call float@copysignf(float%k,float%n)
ret float%o
}
define fastcc i32@_SMLFN6Real329unorderedE(i8*inreg%a)#4 gc"smlsharp"{
%b=bitcast i8*%a to float*
%c=load float,float*%b,align 4
%d=fcmp ord float%c,0.000000e+00
br i1%d,label%f,label%e
e:
ret i32 1
f:
%g=getelementptr inbounds i8,i8*%a,i64 4
%h=bitcast i8*%g to float*
%i=load float,float*%h,align 4
%j=fcmp uno float%i,0.000000e+00
%k=zext i1%j to i32
ret i32%k
}
define fastcc i32@_SMLFN6Real328isFiniteE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%g=tail call fastcc i32@_SMLFN18SMLSharp__RealClass8isFiniteE(i32 inreg%f)
ret i32%g
}
define fastcc i32@_SMLFN6Real328isNormalE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%g=tail call fastcc i32@_SMLFN18SMLSharp__RealClass8isNormalE(i32 inreg%f)
ret i32%g
}
define fastcc i32@_SMLFN6Real325classE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%g=tail call fastcc i32@_SMLFN18SMLSharp__RealClass5classE(i32 inreg%f)
ret i32%g
}
define fastcc float@_SMLFN6Real3210fromManExpE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=bitcast i8*%h to i32*
%k=load i32,i32*%j,align 4
%l=getelementptr inbounds i8,i8*%h,i64 4
%m=bitcast i8*%l to float*
%n=load float,float*%m,align 4
%o=call float@ldexpf(float%n,i32%k)
ret float%o
}
define fastcc float@_SMLFN6Real327realModE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i8*@_SMLFN6Real325splitE(i32 inreg%a)
%g=bitcast i8*%f to float*
%h=load float,float*%g,align 4
ret float%h
}
define fastcc float@_SMLFN6Real3210checkFloatE(i32 inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc i32@_SMLFN18SMLSharp__RealClass10classFloatE(i32 inreg%a)
%i=call fastcc i32@_SMLFN18SMLSharp__RealClass5classE(i32 inreg%h)
switch i32%i,label%j[
i32 1,label%D
i32 0,label%l
]
j:
%k=bitcast i32%a to float
ret float%k
l:
%m=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%m,i8**%b,align 8
%n=call i8*@sml_alloc(i32 inreg 20)#0
%o=getelementptr inbounds i8,i8*%n,i64 -4
%p=bitcast i8*%o to i32*
store i32 1342177296,i32*%p,align 4
store i8*%n,i8**%c,align 8
%q=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%r=bitcast i8*%n to i8**
store i8*%q,i8**%r,align 8
%s=getelementptr inbounds i8,i8*%n,i64 8
%t=bitcast i8*%s to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@O,i64 0,i32 2,i64 0),i8**%t,align 8
%u=getelementptr inbounds i8,i8*%n,i64 16
%v=bitcast i8*%u to i32*
store i32 3,i32*%v,align 4
%w=call i8*@sml_alloc(i32 inreg 60)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177336,i32*%y,align 4
%z=getelementptr inbounds i8,i8*%w,i64 56
%A=bitcast i8*%z to i32*
store i32 1,i32*%A,align 4
%B=load i8*,i8**%c,align 8
%C=bitcast i8*%w to i8**
store i8*%B,i8**%C,align 8
call void@sml_raise(i8*inreg%w)#1
unreachable
D:
%E=load i8*,i8**@_SMLZ3Div,align 8
store i8*%E,i8**%b,align 8
%F=call i8*@sml_alloc(i32 inreg 20)#0
%G=getelementptr inbounds i8,i8*%F,i64 -4
%H=bitcast i8*%G to i32*
store i32 1342177296,i32*%H,align 4
store i8*%F,i8**%c,align 8
%I=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%J=bitcast i8*%F to i8**
store i8*%I,i8**%J,align 8
%K=getelementptr inbounds i8,i8*%F,i64 8
%L=bitcast i8*%K to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@N,i64 0,i32 2,i64 0),i8**%L,align 8
%M=getelementptr inbounds i8,i8*%F,i64 16
%N=bitcast i8*%M to i32*
store i32 3,i32*%N,align 4
%O=call i8*@sml_alloc(i32 inreg 60)#0
%P=getelementptr inbounds i8,i8*%O,i64 -4
%Q=bitcast i8*%P to i32*
store i32 1342177336,i32*%Q,align 4
%R=getelementptr inbounds i8,i8*%O,i64 56
%S=bitcast i8*%R to i32*
store i32 1,i32*%S,align 4
%T=load i8*,i8**%c,align 8
%U=bitcast i8*%O to i8**
store i8*%T,i8**%U,align 8
call void@sml_raise(i8*inreg%O)#1
unreachable
}
define fastcc float@_SMLFN6Real329realFloorE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@floorf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real328realCeilE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@ceilf(float%f)
ret float%g
}
define fastcc float@_SMLFN6Real329realTruncE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=tail call float@truncf(float%f)
ret float%g
}
define fastcc i32@_SMLFN6Real325floorE(i32 inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=bitcast i32%a to float
%i=call float@floorf(float%h)
%j=fcmp ord float%i,0.000000e+00
br i1%j,label%C,label%k
k:
%l=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%l,i8**%b,align 8
%m=call i8*@sml_alloc(i32 inreg 20)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177296,i32*%o,align 4
store i8*%m,i8**%c,align 8
%p=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%q=bitcast i8*%m to i8**
store i8*%p,i8**%q,align 8
%r=getelementptr inbounds i8,i8*%m,i64 8
%s=bitcast i8*%r to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@T,i64 0,i32 2,i64 0),i8**%s,align 8
%t=getelementptr inbounds i8,i8*%m,i64 16
%u=bitcast i8*%t to i32*
store i32 3,i32*%u,align 4
%v=call i8*@sml_alloc(i32 inreg 60)#0
%w=getelementptr inbounds i8,i8*%v,i64 -4
%x=bitcast i8*%w to i32*
store i32 1342177336,i32*%x,align 4
%y=getelementptr inbounds i8,i8*%v,i64 56
%z=bitcast i8*%y to i32*
store i32 1,i32*%z,align 4
%A=load i8*,i8**%c,align 8
%B=bitcast i8*%v to i8**
store i8*%A,i8**%B,align 8
call void@sml_raise(i8*inreg%v)#1
unreachable
C:
%D=fcmp ult float%i,0xC1E0000000000000
%E=fcmp ugt float%i,0x41DFFFFFE0000000
%F=or i1%D,%E
br i1%F,label%I,label%G
G:
%H=fptosi float%i to i32
ret i32%H
I:
%J=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%J,i8**%b,align 8
%K=call i8*@sml_alloc(i32 inreg 20)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177296,i32*%M,align 4
store i8*%K,i8**%c,align 8
%N=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%O=bitcast i8*%K to i8**
store i8*%N,i8**%O,align 8
%P=getelementptr inbounds i8,i8*%K,i64 8
%Q=bitcast i8*%P to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@T,i64 0,i32 2,i64 0),i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%K,i64 16
%S=bitcast i8*%R to i32*
store i32 3,i32*%S,align 4
%T=call i8*@sml_alloc(i32 inreg 60)#0
%U=getelementptr inbounds i8,i8*%T,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177336,i32*%V,align 4
%W=getelementptr inbounds i8,i8*%T,i64 56
%X=bitcast i8*%W to i32*
store i32 1,i32*%X,align 4
%Y=load i8*,i8**%c,align 8
%Z=bitcast i8*%T to i8**
store i8*%Y,i8**%Z,align 8
call void@sml_raise(i8*inreg%T)#1
unreachable
}
define fastcc i32@_SMLFN6Real324ceilE(i32 inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=bitcast i32%a to float
%i=call float@ceilf(float%h)
%j=fcmp ord float%i,0.000000e+00
br i1%j,label%C,label%k
k:
%l=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%l,i8**%b,align 8
%m=call i8*@sml_alloc(i32 inreg 20)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177296,i32*%o,align 4
store i8*%m,i8**%c,align 8
%p=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%q=bitcast i8*%m to i8**
store i8*%p,i8**%q,align 8
%r=getelementptr inbounds i8,i8*%m,i64 8
%s=bitcast i8*%r to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@V,i64 0,i32 2,i64 0),i8**%s,align 8
%t=getelementptr inbounds i8,i8*%m,i64 16
%u=bitcast i8*%t to i32*
store i32 3,i32*%u,align 4
%v=call i8*@sml_alloc(i32 inreg 60)#0
%w=getelementptr inbounds i8,i8*%v,i64 -4
%x=bitcast i8*%w to i32*
store i32 1342177336,i32*%x,align 4
%y=getelementptr inbounds i8,i8*%v,i64 56
%z=bitcast i8*%y to i32*
store i32 1,i32*%z,align 4
%A=load i8*,i8**%c,align 8
%B=bitcast i8*%v to i8**
store i8*%A,i8**%B,align 8
call void@sml_raise(i8*inreg%v)#1
unreachable
C:
%D=fcmp ult float%i,0xC1E0000000000000
%E=fcmp ugt float%i,0x41DFFFFFE0000000
%F=or i1%D,%E
br i1%F,label%I,label%G
G:
%H=fptosi float%i to i32
ret i32%H
I:
%J=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%J,i8**%b,align 8
%K=call i8*@sml_alloc(i32 inreg 20)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177296,i32*%M,align 4
store i8*%K,i8**%c,align 8
%N=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%O=bitcast i8*%K to i8**
store i8*%N,i8**%O,align 8
%P=getelementptr inbounds i8,i8*%K,i64 8
%Q=bitcast i8*%P to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@V,i64 0,i32 2,i64 0),i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%K,i64 16
%S=bitcast i8*%R to i32*
store i32 3,i32*%S,align 4
%T=call i8*@sml_alloc(i32 inreg 60)#0
%U=getelementptr inbounds i8,i8*%T,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177336,i32*%V,align 4
%W=getelementptr inbounds i8,i8*%T,i64 56
%X=bitcast i8*%W to i32*
store i32 1,i32*%X,align 4
%Y=load i8*,i8**%c,align 8
%Z=bitcast i8*%T to i8**
store i8*%Y,i8**%Z,align 8
call void@sml_raise(i8*inreg%T)#1
unreachable
}
define fastcc i32@_SMLFN6Real325roundE(i32 inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc float@_SMLFN6Real329realRoundE(i32 inreg%a)
%i=fcmp ord float%h,0.000000e+00
br i1%i,label%B,label%j
j:
%k=load i8*,i8**@_SMLZ6Domain,align 8
store i8*%k,i8**%b,align 8
%l=call i8*@sml_alloc(i32 inreg 20)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177296,i32*%n,align 4
store i8*%l,i8**%c,align 8
%o=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%p=bitcast i8*%l to i8**
store i8*%o,i8**%p,align 8
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@X,i64 0,i32 2,i64 0),i8**%r,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to i32*
store i32 3,i32*%t,align 4
%u=call i8*@sml_alloc(i32 inreg 60)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177336,i32*%w,align 4
%x=getelementptr inbounds i8,i8*%u,i64 56
%y=bitcast i8*%x to i32*
store i32 1,i32*%y,align 4
%z=load i8*,i8**%c,align 8
%A=bitcast i8*%u to i8**
store i8*%z,i8**%A,align 8
call void@sml_raise(i8*inreg%u)#1
unreachable
B:
%C=fcmp ult float%h,0xC1E0000000000000
%D=fcmp ugt float%h,0x41DFFFFFE0000000
%E=or i1%C,%D
br i1%E,label%H,label%F
F:
%G=fptosi float%h to i32
ret i32%G
H:
%I=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%I,i8**%b,align 8
%J=call i8*@sml_alloc(i32 inreg 20)#0
%K=getelementptr inbounds i8,i8*%J,i64 -4
%L=bitcast i8*%K to i32*
store i32 1342177296,i32*%L,align 4
store i8*%J,i8**%c,align 8
%M=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%N=bitcast i8*%J to i8**
store i8*%M,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%J,i64 8
%P=bitcast i8*%O to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@X,i64 0,i32 2,i64 0),i8**%P,align 8
%Q=getelementptr inbounds i8,i8*%J,i64 16
%R=bitcast i8*%Q to i32*
store i32 3,i32*%R,align 4
%S=call i8*@sml_alloc(i32 inreg 60)#0
%T=getelementptr inbounds i8,i8*%S,i64 -4
%U=bitcast i8*%T to i32*
store i32 1342177336,i32*%U,align 4
%V=getelementptr inbounds i8,i8*%S,i64 56
%W=bitcast i8*%V to i32*
store i32 1,i32*%W,align 4
%X=load i8*,i8**%c,align 8
%Y=bitcast i8*%S to i8**
store i8*%X,i8**%Y,align 8
call void@sml_raise(i8*inreg%S)#1
unreachable
}
define internal fastcc i8*@_SMLLN6Real3210toLargeIntE_209(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%c,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%f,label%h
f:
%g=bitcast i8*%a to i32*
br label%k
h:
call void@sml_check(i32 inreg%d)
%i=bitcast i8**%c to i32**
%j=load i32*,i32**%i,align 8
br label%k
k:
%l=phi i32*[%j,%h],[%g,%f]
%m=bitcast i32%b to float
store i8*null,i8**%c,align 8
%n=load i32,i32*%l,align 4
%o=call fastcc i8*@_SMLFN6Real6410toLargeIntE(i32 inreg%n)
%p=getelementptr inbounds i8,i8*%o,i64 16
%q=bitcast i8*%p to i8*(i8*,i8*)**
%r=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%q,align 8
%s=bitcast i8*%o to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%c,align 8
%u=fpext float%m to double
%v=call i8*@sml_alloc(i32 inreg 8)#0
%w=getelementptr inbounds i8,i8*%v,i64 -4
%x=bitcast i8*%w to i32*
store i32 8,i32*%x,align 4
%y=bitcast i8*%v to double*
store double%u,double*%y,align 8
%z=load i8*,i8**%c,align 8
%A=tail call fastcc i8*%r(i8*inreg%z,i8*inreg%v)
ret i8*%A
}
define fastcc i8*@_SMLFN6Real3210toLargeIntE(i32 inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
%c=call i8*@sml_alloc(i32 inreg 12)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%c,i8**%b,align 8
store i32%a,i32*%d,align 4
%g=getelementptr inbounds i8,i8*%c,i64 8
%h=bitcast i8*%g to i32*
store i32 0,i32*%h,align 4
%i=call i8*@sml_alloc(i32 inreg 28)#0
%j=getelementptr inbounds i8,i8*%i,i64 -4
%k=bitcast i8*%j to i32*
store i32 1342177304,i32*%k,align 4
%l=load i8*,i8**%b,align 8
%m=bitcast i8*%i to i8**
store i8*%l,i8**%m,align 8
%n=getelementptr inbounds i8,i8*%i,i64 8
%o=bitcast i8*%n to void(...)**
store void(...)*bitcast(i8*(i8*,i32)*@_SMLLN6Real3210toLargeIntE_209 to void(...)*),void(...)**%o,align 8
%p=getelementptr inbounds i8,i8*%i,i64 16
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real3210toLargeIntE_280 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%i,i64 24
%s=bitcast i8*%r to i32*
store i32 -2147483647,i32*%s,align 4
ret i8*%i
}
define fastcc float@_SMLFN6Real3212fromLargeIntE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=call fastcc double@_SMLFN6Real6412fromLargeIntE(i8*inreg%h)
%k=fptrunc double%j to float
ret float%k
}
define internal fastcc float@_SMLLN6Real329fromLargeE_216(i8*inreg%a,i64 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
%e=bitcast i8*%a to i32*
%f=load i32,i32*%e,align 4
%g=icmp eq i32%f,0
br i1%g,label%B,label%h
h:
%i=load i8*,i8**@_SMLZN16SMLSharp__Runtime3BugE,align 8
store i8*%i,i8**%c,align 8
%j=call i8*@sml_alloc(i32 inreg 28)#0
%k=getelementptr inbounds i8,i8*%j,i64 -4
%l=bitcast i8*%k to i32*
store i32 1342177304,i32*%l,align 4
store i8*%j,i8**%d,align 8
%m=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%n=bitcast i8*%j to i8**
store i8*%m,i8**%n,align 8
%o=getelementptr inbounds i8,i8*%j,i64 8
%p=bitcast i8*%o to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@ab,i64 0,i32 2,i64 0),i8**%p,align 8
%q=getelementptr inbounds i8,i8*%j,i64 16
%r=bitcast i8*%q to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@ac,i64 0,i32 2,i64 0),i8**%r,align 8
%s=getelementptr inbounds i8,i8*%j,i64 24
%t=bitcast i8*%s to i32*
store i32 7,i32*%t,align 4
%u=call i8*@sml_alloc(i32 inreg 60)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177336,i32*%w,align 4
%x=getelementptr inbounds i8,i8*%u,i64 56
%y=bitcast i8*%x to i32*
store i32 1,i32*%y,align 4
%z=load i8*,i8**%d,align 8
%A=bitcast i8*%u to i8**
store i8*%z,i8**%A,align 8
call void@sml_raise(i8*inreg%u)#1
unreachable
B:
%C=bitcast i64%b to double
%D=fptrunc double%C to float
ret float%D
}
define fastcc i8*@_SMLFN6Real329fromLargeE(i32 inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
%c=call i8*@sml_alloc(i32 inreg 12)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%c,i8**%b,align 8
store i32%a,i32*%d,align 4
%g=getelementptr inbounds i8,i8*%c,i64 8
%h=bitcast i8*%g to i32*
store i32 0,i32*%h,align 4
%i=call i8*@sml_alloc(i32 inreg 28)#0
%j=getelementptr inbounds i8,i8*%i,i64 -4
%k=bitcast i8*%j to i32*
store i32 1342177304,i32*%k,align 4
%l=load i8*,i8**%b,align 8
%m=bitcast i8*%i to i8**
store i8*%l,i8**%m,align 8
%n=getelementptr inbounds i8,i8*%i,i64 8
%o=bitcast i8*%n to void(...)**
store void(...)*bitcast(float(i8*,i64)*@_SMLLN6Real329fromLargeE_216 to void(...)*),void(...)**%o,align 8
%p=getelementptr inbounds i8,i8*%i,i64 16
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real329fromLargeE_283 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%i,i64 24
%s=bitcast i8*%r to i32*
store i32 -2147483647,i32*%s,align 4
ret i8*%i
}
define internal fastcc i8*@_SMLLN6Real323fmtE_219(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%c,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%f,label%h
f:
%g=bitcast i8*%a to i8**
br label%k
h:
call void@sml_check(i32 inreg%d)
%i=bitcast i8**%c to i8***
%j=load i8**,i8***%i,align 8
br label%k
k:
%l=phi i8**[%j,%h],[%g,%f]
%m=bitcast i32%b to float
store i8*null,i8**%c,align 8
%n=load i8*,i8**%l,align 8
%o=call fastcc i8*@_SMLFN6Real643fmtE(i8*inreg%n)
%p=getelementptr inbounds i8,i8*%o,i64 16
%q=bitcast i8*%p to i8*(i8*,i8*)**
%r=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%q,align 8
%s=bitcast i8*%o to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%c,align 8
%u=fpext float%m to double
%v=call i8*@sml_alloc(i32 inreg 8)#0
%w=getelementptr inbounds i8,i8*%v,i64 -4
%x=bitcast i8*%w to i32*
store i32 8,i32*%x,align 4
%y=bitcast i8*%v to double*
store double%u,double*%y,align 8
%z=load i8*,i8**%c,align 8
%A=tail call fastcc i8*%r(i8*inreg%z,i8*inreg%v)
ret i8*%A
}
define fastcc i8*@_SMLFN6Real323fmtE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i32)*@_SMLLN6Real323fmtE_219 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real323fmtE_285 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define fastcc i8*@_SMLFN6Real328toStringE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=fpext float%f to double
%h=bitcast double%g to i64
%i=tail call fastcc i8*@_SMLFN6Real648toStringE(i64 inreg%h)
ret i8*%i
}
define internal fastcc i8*@_SMLLN6Real324scanE_224(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
k:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%a,%k]
%l=bitcast i8*%j to i32*
%m=load i32,i32*%l,align 4
store i8*null,i8**%d,align 8
%n=getelementptr inbounds i8,i8*%j,i64 4
%o=bitcast i8*%n to i32*
%p=load i32,i32*%o,align 4
%q=call fastcc i8*@_SMLLN6Real324scanE_138(i32 inreg%m,i32 inreg%p)
%r=getelementptr inbounds i8,i8*%q,i64 16
%s=bitcast i8*%r to i8*(i8*,i8*)**
%t=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%s,align 8
%u=bitcast i8*%q to i8**
%v=load i8*,i8**%u,align 8
%w=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%x=call fastcc i8*%t(i8*inreg%v,i8*inreg%w)
ret i8*%x
}
define fastcc i8*@_SMLFN6Real324scanE(i32 inreg%a,i32 inreg%b)#4 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 1342177288,i32*%g,align 4
store i8*%d,i8**%c,align 8
store i32%a,i32*%e,align 4
%h=getelementptr inbounds i8,i8*%d,i64 4
%i=bitcast i8*%h to i32*
store i32%b,i32*%i,align 4
%j=getelementptr inbounds i8,i8*%d,i64 8
%k=bitcast i8*%j to i32*
store i32 0,i32*%k,align 4
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177304,i32*%n,align 4
%o=load i8*,i8**%c,align 8
%p=bitcast i8*%l to i8**
store i8*%o,i8**%p,align 8
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324scanE_224 to void(...)*),void(...)**%r,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN6Real324scanE_224 to void(...)*),void(...)**%t,align 8
%u=getelementptr inbounds i8,i8*%l,i64 24
%v=bitcast i8*%u to i32*
store i32 -2147483647,i32*%v,align 4
ret i8*%l
}
define fastcc i8*@_SMLFN6Real3210fromStringE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc i8*@_SMLFN9StringCvt10scanStringE(i32 inreg 0,i32 inreg 4)
%i=getelementptr inbounds i8,i8*%h,i64 16
%j=bitcast i8*%i to i8*(i8*,i8*)**
%k=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j,align 8
%l=bitcast i8*%h to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%c,align 8
%n=call fastcc i8*@_SMLLN6Real324scanE_138(i32 inreg 0,i32 inreg 4)
%o=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%p=call fastcc i8*%k(i8*inreg%o,i8*inreg%n)
%q=getelementptr inbounds i8,i8*%p,i64 16
%r=bitcast i8*%q to i8*(i8*,i8*)**
%s=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%r,align 8
%t=bitcast i8*%p to i8**
%u=load i8*,i8**%t,align 8
%v=load i8*,i8**%b,align 8
%w=tail call fastcc i8*%s(i8*inreg%u,i8*inreg%v)
ret i8*%w
}
define fastcc i8*@_SMLFN6Real329toDecimalE(i32 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=bitcast i32%a to float
%g=fpext float%f to double
%h=bitcast double%g to i64
%i=tail call fastcc i8*@_SMLFN6Real649toDecimalE(i64 inreg%h)
ret i8*%i
}
define fastcc i8*@_SMLFN6Real3211fromDecimalE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=call fastcc i8*@_SMLFN6Real6411fromDecimalE(i8*inreg%h)
%k=icmp eq i8*%j,null
br i1%k,label%l,label%m
l:
ret i8*null
m:
%n=bitcast i8*%j to double*
%o=load double,double*%n,align 8
%p=fptrunc double%o to float
%q=call i8*@sml_alloc(i32 inreg 12)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177288,i32*%s,align 4
%t=getelementptr inbounds i8,i8*%q,i64 4
%u=bitcast i8*%t to i32*
store i32 0,i32*%u,align 1
%v=bitcast i8*%q to float*
store float%p,float*%v,align 4
%w=getelementptr inbounds i8,i8*%q,i64 8
%x=bitcast i8*%w to i32*
store i32 0,i32*%x,align 4
ret i8*%q
}
define internal fastcc i8*@_SMLLN6Real324Math3powE_233(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc float@_SMLLN6Real324Math3powE_97(i8*inreg%a,i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real322_J_KE_234(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to float*
%d=load float,float*%c,align 4
%e=getelementptr inbounds i8,i8*%b,i64 4
%f=bitcast i8*%e to float*
%g=load float,float*%f,align 4
%h=getelementptr inbounds i8,i8*%b,i64 8
%i=bitcast i8*%h to float*
%j=load float,float*%i,align 4
%k=fmul float%d,%g
%l=fadd float%k,%j
%m=tail call i8*@sml_alloc(i32 inreg 4)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 4,i32*%o,align 4
%p=bitcast i8*%m to float*
store float%l,float*%p,align 4
ret i8*%m
}
define internal fastcc i8*@_SMLLN6Real322_J_ME_235(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to float*
%d=load float,float*%c,align 4
%e=getelementptr inbounds i8,i8*%b,i64 4
%f=bitcast i8*%e to float*
%g=load float,float*%f,align 4
%h=getelementptr inbounds i8,i8*%b,i64 8
%i=bitcast i8*%h to float*
%j=load float,float*%i,align 4
%k=fmul float%d,%g
%l=fsub float%k,%j
%m=tail call i8*@sml_alloc(i32 inreg 4)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 4,i32*%o,align 4
%p=bitcast i8*%m to float*
store float%l,float*%p,align 4
ret i8*%m
}
define internal fastcc i8*@_SMLLN6Real323minE_236(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real323minE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real323maxE_237(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real323maxE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real328sameSignE_238(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN6Real328sameSignE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
store i32%c,i32*%e,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real3211compareRealE_239(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN6Real3211compareRealE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
store i32%c,i32*%e,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real327compareE_240(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN6Real327compareE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
store i32%c,i32*%e,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real328toManExpE_241(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real328toManExpE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real325splitE_242(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real325splitE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real329nextAfterE_243(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real329nextAfterE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real329realRoundE_245(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real329realRoundE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real325toIntE_246(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLLN6Real325toIntE_133(i8*inreg%a,i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real325toIntE_247(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real325toIntE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real324Math4sqrtE_249(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4sqrtE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math3sinE_250(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math3sinE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math3cosE_251(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math3cosE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math3tanE_252(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math3tanE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math4asinE_253(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4asinE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math4acosE_254(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4acosE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math4atanE_255(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4atanE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math5atan2E_256(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real324Math5atan2E(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real324Math3expE_257(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math3expE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math2lnE_259(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math2lnE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math5log10E_260(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math5log10E(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math4sinhE_261(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4sinhE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math4coshE_262(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4coshE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324Math4tanhE_263(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real324Math4tanhE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324signE_264(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real324signE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real327signBitE_265(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real327signBitE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real328copySignE_266(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real328copySignE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real329unorderedE_267(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
n:
%c=bitcast i8*%b to float*
%d=load float,float*%c,align 4
%e=fcmp ord float%d,0.000000e+00
br i1%e,label%f,label%l
f:
%g=getelementptr inbounds i8,i8*%b,i64 4
%h=bitcast i8*%g to float*
%i=load float,float*%h,align 4
%j=fcmp uno float%i,0.000000e+00
%k=zext i1%j to i32
br label%l
l:
%m=phi i32[%k,%f],[1,%n]
%o=tail call i8*@sml_alloc(i32 inreg 4)#0
%p=bitcast i8*%o to i32*
%q=getelementptr inbounds i8,i8*%o,i64 -4
%r=bitcast i8*%q to i32*
store i32 4,i32*%r,align 4
store i32%m,i32*%p,align 4
ret i8*%o
}
define internal fastcc i8*@_SMLLN6Real328isFiniteE_268(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real328isFiniteE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real328isNormalE_269(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real328isNormalE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real325classE_270(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real325classE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real3210fromManExpE_271(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real3210fromManExpE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real327realModE_272(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real327realModE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real3210checkFloatE_273(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real3210checkFloatE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real329realFloorE_274(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real329realFloorE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real328realCeilE_275(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real328realCeilE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real329realTruncE_276(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc float@_SMLFN6Real329realTruncE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real325floorE_277(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real325floorE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real324ceilE_278(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real324ceilE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real325roundE_279(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLFN6Real325roundE(i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real3210toLargeIntE_280(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLLN6Real3210toLargeIntE_209(i8*inreg%a,i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real3210toLargeIntE_281(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real3210toLargeIntE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real3212fromLargeIntE_282(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc float@_SMLFN6Real3212fromLargeIntE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
%g=bitcast i8*%d to float*
store float%c,float*%g,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN6Real329fromLargeE_283(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i64*
%d=load i64,i64*%c,align 4
%e=tail call fastcc float@_SMLLN6Real329fromLargeE_216(i8*inreg%a,i64 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
%i=bitcast i8*%f to float*
store float%e,float*%i,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLN6Real329fromLargeE_284(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real329fromLargeE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real323fmtE_285(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLLN6Real323fmtE_219(i8*inreg%a,i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real323fmtE_286(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN6Real323fmtE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN6Real328toStringE_287(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real328toStringE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real324scanE_288(i8*inreg%a,i8*inreg%b,i8*inreg%c)#4 gc"smlsharp"{
%d=bitcast i8*%b to i32*
%e=load i32,i32*%d,align 4
%f=bitcast i8*%c to i32*
%g=load i32,i32*%f,align 4
%h=tail call fastcc i8*@_SMLFN6Real324scanE(i32 inreg%e,i32 inreg%g)
ret i8*%h
}
define internal fastcc i8*@_SMLLN6Real3210fromStringE_289(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN6Real3210fromStringE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN6Real329toDecimalE_290(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN6Real329toDecimalE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN6Real3211fromDecimalE_291(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN6Real3211fromDecimalE(i8*inreg%b)
ret i8*%c
}
declare void@llvm.memcpy.p0i8.p0i8.i32(i8*,i8*,i32,i1)#0
declare void@llvm.memset.p0i8.i32(i8*,i8,i32,i1)#0
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
attributes#4={nounwind uwtable}
