Skip to content

Instantly share code, notes, and snippets.

@PXAHyLee
Created May 16, 2016 13:24
Show Gist options
  • Save PXAHyLee/bb6369d4a0a84a38a4324f9afa98750f to your computer and use it in GitHub Desktop.
Save PXAHyLee/bb6369d4a0a84a38a4324f9afa98750f to your computer and use it in GitHub Desktop.
LLVM Assembly code of the corresponding OpenCL code
; ModuleID = '/home/phi/codebase/hsa-runtime-wrapper/samples/MonteCarloAsianDP/MonteCarloAsianDP_Kernels.cl'
source_filename = "/home/phi/codebase/hsa-runtime-wrapper/samples/MonteCarloAsianDP/MonteCarloAsianDP_Kernels.cl"
target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-p24:64:64-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64"
target triple = "amdgcn--amdhsa"
%struct._MonteCalroAttrib = type { <4 x double>, <4 x double>, <4 x double>, <4 x double>, <4 x double>, <4 x double>, <4 x double> }
@PIBITS_TBL = linkonce_odr addrspace(2) constant [158 x i8] c"\E0\F1\1B\C1\0CX!t5~\C4~\ED\AF\A9KJ)\DE\E7\1C\F4\EC\C5\97\AF\1F\EB\9E\D4\B5\A8\7Fy\9A\FD\18=\DD&,\9F<\FB\D9\B4}\B4)h-F\BC\BC?`\16x\FF_\E2\7F\EC\A0\E4\F7.~\11r\D2\E7L\0D\E6XG\E6\04\F9}\D1\9A\C0q\A6\13\12\ED\BA\D4\D7\08\A2\FB\9C\A6\C4r\ACw\F8sHF'\A8\BB$\19\80K7\09\E9\B8\91\DC\86\15\EFz\AF\8EE\F9\07A\0E\F1dV\8Am\03w\D3\D4G_\9D\F0\A7T\109\B9\0D\E6\8B\02\00\00\00\00\00\00\00", align 1
@TWO_TO_JBY64_EP = linkonce_odr addrspace(2) constant [64 x <2 x double>] [<2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double> <double 0x3FF02C9A30000000, double 0x3E6CEF00C1DCDEF9>, <2 x double> <double 0x3FF059B0D0000000, double 0x3E48AC2BA1D73E2A>, <2 x double> <double 0x3FF0874510000000, double 0x3E60EB37901186BE>, <2 x double> <double 0x3FF0B55860000000, double 0x3E69F3121EC53172>, <2 x double> <double 0x3FF0E3EC30000000, double 0x3E469E8D10103A17>, <2 x double> <double 0x3FF11301D0000000, double 0x3DF25B50A4EBBF1A>, <2 x double> <double 0x3FF1429AA0000000, double 0x3E6D525BBF668203>, <2 x double> <double 0x3FF172B830000000, double 0x3E68FAA2F5B9BEF9>, <2 x double> <double 0x3FF1A35BE0000000, double 0x3E66DF96EA796D31>, <2 x double> <double 0x3FF1D48730000000, double 0x3E368B9AA7805B80>, <2 x double> <double 0x3FF2063B80000000, double 0x3E60C519AC771DD6>, <2 x double> <double 0x3FF2387A60000000, double 0x3E6CEAC470CD83F5>, <2 x double> <double 0x3FF26B4560000000, double 0x3E5789F37495E99C>, <2 x double> <double 0x3FF29E9DF0000000, double 0x3E547F7B84B09745>, <2 x double> <double 0x3FF2D285A0000000, double 0x3E5B900C2D002475>, <2 x double> <double 0x3FF306FE00000000, double 0x3E64636E2A5BD1AB>, <2 x double> <double 0x3FF33C08B0000000, double 0x3E4320B7FA64E430>, <2 x double> <double 0x3FF371A730000000, double 0x3E5CEAA72A9C5154>, <2 x double> <double 0x3FF3A7DB30000000, double 0x3E53967FDBA86F24>, <2 x double> <double 0x3FF3DEA640000000, double 0x3E682468446B6824>, <2 x double> <double 0x3FF4160A20000000, double 0x3E3F72E29F84325B>, <2 x double> <double 0x3FF44E0860000000, double 0x3E18624B40C4DBD0>, <2 x double> <double 0x3FF486A2B0000000, double 0x3E5704F3404F068E>, <2 x double> <double 0x3FF4BFDAD0000000, double 0x3E54D8A89C750E5E>, <2 x double> <double 0x3FF4F9B270000000, double 0x3E5A74B29AB4CF62>, <2 x double> <double 0x3FF5342B50000000, double 0x3E5A753E077C2A0F>, <2 x double> <double 0x3FF56F4730000000, double 0x3E5AD49F699BB2C0>, <2 x double> <double 0x3FF5AB07D0000000, double 0x3E6A90A852B19260>, <2 x double> <double 0x3FF5E76F10000000, double 0x3E56B48521BA6F93>, <2 x double> <double 0x3FF6247EB0000000, double 0x3E0D2AC258F87D03>, <2 x double> <double 0x3FF6623880000000, double 0x3E42A91124893ECF>, <2 x double> <double 0x3FF6A09E60000000, double 0x3E59FCEF32422CBE>, <2 x double> <double 0x3FF6DFB230000000, double 0x3E68CA345DE441C5>, <2 x double> <double 0x3FF71F75E0000000, double 0x3E61D8BEE7BA46E1>, <2 x double> <double 0x3FF75FEB50000000, double 0x3E59099F22FDBA6A>, <2 x double> <double 0x3FF7A11470000000, double 0x3E4F580C36BEA881>, <2 x double> <double 0x3FF7E2F330000000, double 0x3E5B3D398841740A>, <2 x double> <double 0x3FF8258990000000, double 0x3E62999C25159F11>, <2 x double> <double 0x3FF868D990000000, double 0x3E668925D901C83B>, <2 x double> <double 0x3FF8ACE540000000, double 0x3E415506DADD3E2A>, <2 x double> <double 0x3FF8F1AE90000000, double 0x3E622AEE6C57304E>, <2 x double> <double 0x3FF93737B0000000, double 0x3E29B8BC9E8A0387>, <2 x double> <double 0x3FF97D8290000000, double 0x3E6FBC9C9F173D24>, <2 x double> <double 0x3FF9C49180000000, double 0x3E451F8480E3E235>, <2 x double> <double 0x3FFA0C6670000000, double 0x3E66BBCAC96535B5>, <2 x double> <double 0x3FFA5503B0000000, double 0x3E41F12AE45A1224>, <2 x double> <double 0x3FFA9E6B50000000, double 0x3E55E7F6FD0FAC90>, <2 x double> <double 0x3FFAE89F90000000, double 0x3E62B5A75ABD0E69>, <2 x double> <double 0x3FFB33A2B0000000, double 0x3E609E2BF5ED7FA1>, <2 x double> <double 0x3FFB7F76F0000000, double 0x3E47DAF237553D84>, <2 x double> <double 0x3FFBCC1E90000000, double 0x3E12F074891EE83D>, <2 x double> <double 0x3FFC199BD0000000, double 0x3E6B0AA538444196>, <2 x double> <double 0x3FFC67F120000000, double 0x3E6CAFA29694426F>, <2 x double> <double 0x3FFCB720D0000000, double 0x3E69DF20D22A0797>, <2 x double> <double 0x3FFD072D40000000, double 0x3E640F12F71A1E45>, <2 x double> <double 0x3FFD5818D0000000, double 0x3E69F7490E4BB40B>, <2 x double> <double 0x3FFDA9E600000000, double 0x3E4ED9942B84600D>, <2 x double> <double 0x3FFDFC9730000000, double 0x3E4BDCDAF5CB4656>, <2 x double> <double 0x3FFE502EE0000000, double 0x3E5E2CFFD89CF44C>, <2 x double> <double 0x3FFEA4AFA0000000, double 0x3E452486CC2C7B9D>, <2 x double> <double 0x3FFEFA1BE0000000, double 0x3E6CC2B44EEE3FA4>, <2 x double> <double 0x3FFF507650000000, double 0x3E66DC8A80CE9F09>, <2 x double> <double 0x3FFFA7C180000000, double 0x3E39E90D82E90A7E>], align 16
@LN_TBL = linkonce_odr addrspace(2) constant [65 x <2 x double>] [<2 x double> zeroinitializer, <2 x double> <double 0x3F8FC0A800000000, double 0x3E361F807C79F3DB>, <2 x double> <double 0x3F9F829800000000, double 0x3E6873C1980267C8>, <2 x double> <double 0x3FA7745800000000, double 0x3E5EC65B9F88C69E>, <2 x double> <double 0x3FAF0A3000000000, double 0x3E58022C54CC2F99>, <2 x double> <double 0x3FB341D700000000, double 0x3E62C37A3A125330>, <2 x double> <double 0x3FB6F0D200000000, double 0x3E615CAD69737C93>, <2 x double> <double 0x3FBA926D00000000, double 0x3E4D256AB1B285E9>, <2 x double> <double 0x3FBE270700000000, double 0x3E5B8ABCB97A7AA2>, <2 x double> <double 0x3FC0D77E00000000, double 0x3E6F34239659A5DC>, <2 x double> <double 0x3FC2955280000000, double 0x3E6E07FD48D30177>, <2 x double> <double 0x3FC44D2B00000000, double 0x3E6B32DF4799F4F6>, <2 x double> <double 0x3FC5FF3000000000, double 0x3E6C29E4F4F21CF8>, <2 x double> <double 0x3FC7AB8900000000, double 0x3E1086C848DF1B59>, <2 x double> <double 0x3FC9525A80000000, double 0x3E4CF456B4764130>, <2 x double> <double 0x3FCAF3C900000000, double 0x3E63A02FFCB63398>, <2 x double> <double 0x3FCC8FF780000000, double 0x3E61E6A6886B0976>, <2 x double> <double 0x3FCE270700000000, double 0x3E6B8ABCB97A7AA2>, <2 x double> <double 0x3FCFB91800000000, double 0x3E6B578F8AA35552>, <2 x double> <double 0x3FD0A324C0000000, double 0x3E6139C871AFB9FC>, <2 x double> <double 0x3FD1675C80000000, double 0x3E65D5D30701CE64>, <2 x double> <double 0x3FD22941C0000000, double 0x3E6DE7BCB2D12142>, <2 x double> <double 0x3FD2E8E280000000, double 0x3E6D708E984E1664>, <2 x double> <double 0x3FD3A64C40000000, double 0x3E556945E9C72F36>, <2 x double> <double 0x3FD4618BC0000000, double 0x3E20E2F613E85BDA>, <2 x double> <double 0x3FD51AAD80000000, double 0x3E3CB7E0B42724F6>, <2 x double> <double 0x3FD5D1BD80000000, double 0x3E6FAC04E52846C7>, <2 x double> <double 0x3FD686C800000000, double 0x3E5E9B14AEC442BE>, <2 x double> <double 0x3FD739D7C0000000, double 0x3E6B5DE8034E7126>, <2 x double> <double 0x3FD7EAF800000000, double 0x3E6DC157E1B259D3>, <2 x double> <double 0x3FD89A3380000000, double 0x3E3B05096AD69C62>, <2 x double> <double 0x3FD9479400000000, double 0x3E5C2116FABA4CDD>, <2 x double> <double 0x3FD9F323C0000000, double 0x3E665FCC25F95B47>, <2 x double> <double 0x3FDA9CEC80000000, double 0x3E5A9A08498D4850>, <2 x double> <double 0x3FDB44F740000000, double 0x3E6DE647B1465F77>, <2 x double> <double 0x3FDBEB4D80000000, double 0x3E5DA71B7BF7861D>, <2 x double> <double 0x3FDC8FF7C0000000, double 0x3E3E6A6886B09760>, <2 x double> <double 0x3FDD32FE40000000, double 0x3E6F0075EAB0EF64>, <2 x double> <double 0x3FDDD46A00000000, double 0x3E33071282FB989B>, <2 x double> <double 0x3FDE744240000000, double 0x3E60EB43C3F1BED2>, <2 x double> <double 0x3FDF128F40000000, double 0x3E5FAF06ECB35C84>, <2 x double> <double 0x3FDFAF5880000000, double 0x3E4EF1E63DB35F68>, <2 x double> <double 0x3FE02552A0000000, double 0x3E469743FB1A71A5>, <2 x double> <double 0x3FE0723E40000000, double 0x3E6C1CDF404E5796>, <2 x double> <double 0x3FE0BE72E0000000, double 0x3E4094AA0ADA625E>, <2 x double> <double 0x3FE109F380000000, double 0x3E6E2D4C96FDE3EC>, <2 x double> <double 0x3FE154C3C0000000, double 0x3E62F4D5E9A98F34>, <2 x double> <double 0x3FE19EE6A0000000, double 0x3E6467C96ECC5CBE>, <2 x double> <double 0x3FE1E85F40000000, double 0x3E6E7040D03DEC5A>, <2 x double> <double 0x3FE23130C0000000, double 0x3E67BEBF4282DE36>, <2 x double> <double 0x3FE2795E00000000, double 0x3E6289B11AEB783F>, <2 x double> <double 0x3FE2C0E9E0000000, double 0x3E5A891D1772F538>, <2 x double> <double 0x3FE307D720000000, double 0x3E634F10BE1FB591>, <2 x double> <double 0x3FE34E2880000000, double 0x3E6D9CE1D316EB93>, <2 x double> <double 0x3FE393E0C0000000, double 0x3E63562A19A9C442>, <2 x double> <double 0x3FE3D90260000000, double 0x3E54E2ADF548084C>, <2 x double> <double 0x3FE41D8FE0000000, double 0x3E508CE55CC8C97A>, <2 x double> <double 0x3FE4618BC0000000, double 0x3E30E2F613E85BDA>, <2 x double> <double 0x3FE4A4F840000000, double 0x3E6DB03EBB0227BF>, <2 x double> <double 0x3FE4E7D800000000, double 0x3E61B75BB09CB098>, <2 x double> <double 0x3FE52A2D20000000, double 0x3E496F16ABB9DF22>, <2 x double> <double 0x3FE56BF9C0000000, double 0x3E65B3F399411C62>, <2 x double> <double 0x3FE5AD4040000000, double 0x3E586B3E59F65355>, <2 x double> <double 0x3FE5EE02A0000000, double 0x3E52482CEAE1AC12>, <2 x double> <double 0x3FE62E42E0000000, double 0x3E6EFA39EF35793C>], align 16
; Function Attrs: norecurse nounwind
define void @lshift128(<4 x i32>, i32, <4 x i32> addrspace(4)* nocapture) #0 {
%4 = extractelement <4 x i32> %0, i32 0
%5 = and i32 %1, 31
%6 = shl i32 %4, %5
%7 = insertelement <4 x i32> undef, i32 %6, i32 0
%8 = extractelement <4 x i32> %0, i32 1
%9 = shl i32 %8, %5
%10 = sub i32 0, %1
%11 = and i32 %10, 31
%12 = lshr i32 %4, %11
%13 = or i32 %9, %12
%14 = insertelement <4 x i32> %7, i32 %13, i32 1
%15 = extractelement <4 x i32> %0, i32 2
%16 = shl i32 %15, %5
%17 = lshr i32 %8, %11
%18 = or i32 %16, %17
%19 = insertelement <4 x i32> %14, i32 %18, i32 2
%20 = extractelement <4 x i32> %0, i32 3
%21 = shl i32 %20, %5
%22 = lshr i32 %15, %11
%23 = or i32 %21, %22
%24 = insertelement <4 x i32> %19, i32 %23, i32 3
store <4 x i32> %24, <4 x i32> addrspace(4)* %2, align 16, !tbaa !7
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #1
; Function Attrs: norecurse nounwind
define void @rshift128(<4 x i32>, i32, <4 x i32> addrspace(4)* nocapture) #0 {
%4 = extractelement <4 x i32> %0, i32 3
%5 = and i32 %1, 31
%6 = lshr i32 %4, %5
%7 = insertelement <4 x i32> undef, i32 %6, i32 3
%8 = extractelement <4 x i32> %0, i32 2
%9 = lshr i32 %8, %5
%10 = sub i32 0, %1
%11 = and i32 %10, 31
%12 = shl i32 %4, %11
%13 = or i32 %9, %12
%14 = insertelement <4 x i32> %7, i32 %13, i32 2
%15 = extractelement <4 x i32> %0, i32 1
%16 = lshr i32 %15, %5
%17 = shl i32 %8, %11
%18 = or i32 %16, %17
%19 = insertelement <4 x i32> %14, i32 %18, i32 1
%20 = extractelement <4 x i32> %0, i32 0
%21 = lshr i32 %20, %5
%22 = shl i32 %15, %11
%23 = or i32 %21, %22
%24 = insertelement <4 x i32> %19, i32 %23, i32 0
store <4 x i32> %24, <4 x i32> addrspace(4)* %2, align 16, !tbaa !7
ret void
}
; Function Attrs: nounwind
define void @generateRand(<4 x i32>, <4 x double> addrspace(4)* nocapture, <4 x double> addrspace(4)* nocapture, <4 x i32> addrspace(4)* nocapture) #2 {
%5 = alloca [8 x <4 x i32>], align 16
%6 = alloca <4 x i32>, align 16
%7 = alloca <4 x i32>, align 16
%8 = bitcast [8 x <4 x i32>]* %5 to i8*
call void @llvm.lifetime.start(i64 128, i8* %8) #5
%9 = bitcast <4 x i32>* %6 to i8*
call void @llvm.lifetime.start(i64 16, i8* %9) #5
%10 = bitcast <4 x i32>* %7 to i8*
call void @llvm.lifetime.start(i64 16, i8* %10) #5
%11 = lshr <4 x i32> %0, <i32 30, i32 30, i32 30, i32 30>
%12 = xor <4 x i32> %11, %0
%13 = mul <4 x i32> %12, <i32 1812433253, i32 1812433253, i32 1812433253, i32 1812433253>
%14 = add <4 x i32> %13, <i32 1, i32 1, i32 1, i32 1>
%15 = lshr <4 x i32> %14, <i32 30, i32 30, i32 30, i32 30>
%16 = xor <4 x i32> %14, %15
%17 = mul <4 x i32> %16, <i32 1812433253, i32 1812433253, i32 1812433253, i32 1812433253>
%18 = add <4 x i32> %17, <i32 2, i32 2, i32 2, i32 2>
%19 = lshr <4 x i32> %18, <i32 30, i32 30, i32 30, i32 30>
%20 = xor <4 x i32> %18, %19
%21 = mul <4 x i32> %20, <i32 1812433253, i32 1812433253, i32 1812433253, i32 1812433253>
%22 = add <4 x i32> %21, <i32 3, i32 3, i32 3, i32 3>
%23 = lshr <4 x i32> %22, <i32 30, i32 30, i32 30, i32 30>
%24 = xor <4 x i32> %22, %23
%25 = mul <4 x i32> %24, <i32 1812433253, i32 1812433253, i32 1812433253, i32 1812433253>
%26 = add <4 x i32> %25, <i32 4, i32 4, i32 4, i32 4>
%27 = addrspacecast <4 x i32>* %6 to <4 x i32> addrspace(4)*
%28 = addrspacecast <4 x i32>* %7 to <4 x i32> addrspace(4)*
%29 = getelementptr inbounds [8 x <4 x i32>], [8 x <4 x i32>]* %5, i32 0, i32 0
%30 = getelementptr inbounds [8 x <4 x i32>], [8 x <4 x i32>]* %5, i32 0, i32 1
%31 = getelementptr inbounds [8 x <4 x i32>], [8 x <4 x i32>]* %5, i32 0, i32 2
%32 = extractelement <4 x i32> %0, i32 0
%33 = shl i32 %32, 24
%34 = extractelement <4 x i32> %0, i32 1
%35 = shl i32 %34, 24
%36 = lshr i32 %32, 8
%37 = or i32 %35, %36
%38 = extractelement <4 x i32> %0, i32 2
%39 = shl i32 %38, 24
%40 = lshr i32 %34, 8
%41 = or i32 %39, %40
%42 = extractelement <4 x i32> %0, i32 3
%43 = shl i32 %42, 24
%44 = lshr i32 %38, 8
%45 = or i32 %43, %44
%46 = extractelement <4 x i32> %22, i32 3
%47 = lshr i32 %46, 24
%48 = extractelement <4 x i32> %22, i32 2
%49 = lshr i32 %48, 24
%50 = shl i32 %46, 8
%51 = or i32 %49, %50
%52 = extractelement <4 x i32> %22, i32 1
%53 = lshr i32 %52, 24
%54 = shl i32 %48, 8
%55 = or i32 %53, %54
%56 = extractelement <4 x i32> %22, i32 0
%57 = lshr i32 %56, 24
%58 = shl i32 %52, 8
%59 = or i32 %57, %58
%60 = extractelement <4 x i32> %18, i32 0
%61 = lshr i32 %60, 13
%62 = and i32 %61, 473087
%63 = extractelement <4 x i32> %26, i32 0
%64 = shl i32 %63, 15
%65 = xor i32 %62, %32
%66 = xor i32 %65, %64
%67 = xor i32 %66, %33
%68 = xor i32 %67, %59
%69 = insertelement <4 x i32> undef, i32 %68, i32 0
%70 = extractelement <4 x i32> %18, i32 1
%71 = lshr i32 %70, 13
%72 = and i32 %71, 475005
%73 = extractelement <4 x i32> %26, i32 1
%74 = shl i32 %73, 15
%75 = xor i32 %72, %34
%76 = xor i32 %75, %74
%77 = xor i32 %76, %37
%78 = xor i32 %77, %55
%79 = insertelement <4 x i32> %69, i32 %78, i32 1
%80 = extractelement <4 x i32> %18, i32 2
%81 = lshr i32 %80, 13
%82 = and i32 %81, 490365
%83 = extractelement <4 x i32> %26, i32 2
%84 = shl i32 %83, 15
%85 = xor i32 %82, %38
%86 = xor i32 %85, %84
%87 = xor i32 %86, %41
%88 = xor i32 %87, %51
%89 = insertelement <4 x i32> %79, i32 %88, i32 2
%90 = extractelement <4 x i32> %18, i32 3
%91 = lshr i32 %90, 13
%92 = and i32 %91, 523055
%93 = extractelement <4 x i32> %26, i32 3
%94 = shl i32 %93, 15
%95 = xor i32 %92, %42
%96 = xor i32 %95, %94
%97 = xor i32 %96, %45
%98 = xor i32 %97, %47
%99 = insertelement <4 x i32> %89, i32 %98, i32 3
store <4 x i32> %99, <4 x i32>* %29, align 16
%100 = extractelement <4 x i32> %14, i32 0
%101 = shl i32 %100, 24
%102 = extractelement <4 x i32> %14, i32 1
%103 = shl i32 %102, 24
%104 = lshr i32 %100, 8
%105 = or i32 %103, %104
%106 = extractelement <4 x i32> %14, i32 2
%107 = shl i32 %106, 24
%108 = lshr i32 %102, 8
%109 = or i32 %107, %108
%110 = extractelement <4 x i32> %14, i32 3
%111 = shl i32 %110, 24
%112 = lshr i32 %106, 8
%113 = or i32 %111, %112
%114 = extractelement <4 x i32> %26, i32 3
%115 = lshr i32 %114, 24
%116 = extractelement <4 x i32> %26, i32 2
%117 = lshr i32 %116, 24
%118 = shl i32 %114, 8
%119 = or i32 %117, %118
%120 = extractelement <4 x i32> %26, i32 1
%121 = lshr i32 %120, 24
%122 = shl i32 %116, 8
%123 = or i32 %121, %122
%124 = extractelement <4 x i32> %26, i32 0
%125 = lshr i32 %124, 24
%126 = shl i32 %120, 8
%127 = or i32 %125, %126
%128 = extractelement <4 x i32> %22, i32 0
%129 = lshr i32 %128, 13
%130 = and i32 %129, 473087
%131 = shl i32 %68, 15
%132 = xor i32 %130, %100
%133 = xor i32 %132, %131
%134 = xor i32 %133, %101
%135 = xor i32 %134, %127
%136 = insertelement <4 x i32> undef, i32 %135, i32 0
%137 = extractelement <4 x i32> %22, i32 1
%138 = lshr i32 %137, 13
%139 = and i32 %138, 475005
%140 = shl i32 %78, 15
%141 = xor i32 %139, %102
%142 = xor i32 %141, %140
%143 = xor i32 %142, %105
%144 = xor i32 %143, %123
%145 = insertelement <4 x i32> %136, i32 %144, i32 1
%146 = extractelement <4 x i32> %22, i32 2
%147 = lshr i32 %146, 13
%148 = and i32 %147, 490365
%149 = shl i32 %88, 15
%150 = xor i32 %148, %106
%151 = xor i32 %150, %149
%152 = xor i32 %151, %109
%153 = xor i32 %152, %119
%154 = insertelement <4 x i32> %145, i32 %153, i32 2
%155 = extractelement <4 x i32> %22, i32 3
%156 = lshr i32 %155, 13
%157 = and i32 %156, 523055
%158 = shl i32 %98, 15
%159 = xor i32 %157, %110
%160 = xor i32 %159, %158
%161 = xor i32 %160, %113
%162 = xor i32 %161, %115
%163 = insertelement <4 x i32> %154, i32 %162, i32 3
store <4 x i32> %163, <4 x i32>* %30, align 16
%164 = extractelement <4 x i32> %18, i32 0
%165 = shl i32 %164, 24
%166 = extractelement <4 x i32> %18, i32 1
%167 = shl i32 %166, 24
%168 = lshr i32 %164, 8
%169 = or i32 %167, %168
%170 = extractelement <4 x i32> %18, i32 2
%171 = shl i32 %170, 24
%172 = lshr i32 %166, 8
%173 = or i32 %171, %172
%174 = extractelement <4 x i32> %18, i32 3
%175 = shl i32 %174, 24
%176 = lshr i32 %170, 8
%177 = or i32 %175, %176
%178 = lshr i32 %97, 24
%179 = lshr i32 %88, 24
%180 = shl i32 %98, 8
%181 = or i32 %179, %180
%182 = lshr i32 %78, 24
%183 = shl i32 %88, 8
%184 = or i32 %182, %183
%185 = lshr i32 %68, 24
%186 = shl i32 %78, 8
%187 = or i32 %185, %186
%188 = extractelement <4 x i32> %26, i32 0
%189 = lshr i32 %188, 13
%190 = and i32 %189, 473087
%191 = shl i32 %135, 15
%192 = xor i32 %190, %164
%193 = xor i32 %192, %191
%194 = xor i32 %193, %165
%195 = xor i32 %194, %187
%196 = insertelement <4 x i32> undef, i32 %195, i32 0
%197 = extractelement <4 x i32> %26, i32 1
%198 = lshr i32 %197, 13
%199 = and i32 %198, 475005
%200 = shl i32 %144, 15
%201 = xor i32 %199, %166
%202 = xor i32 %201, %200
%203 = xor i32 %202, %169
%204 = xor i32 %203, %184
%205 = insertelement <4 x i32> %196, i32 %204, i32 1
%206 = extractelement <4 x i32> %26, i32 2
%207 = lshr i32 %206, 13
%208 = and i32 %207, 490365
%209 = shl i32 %153, 15
%210 = xor i32 %208, %170
%211 = xor i32 %210, %209
%212 = xor i32 %211, %173
%213 = xor i32 %212, %181
%214 = insertelement <4 x i32> %205, i32 %213, i32 2
%215 = extractelement <4 x i32> %26, i32 3
%216 = lshr i32 %215, 13
%217 = and i32 %216, 523055
%218 = shl i32 %162, 15
%219 = xor i32 %217, %174
%220 = xor i32 %219, %218
%221 = xor i32 %220, %177
%222 = xor i32 %221, %178
%223 = insertelement <4 x i32> %214, i32 %222, i32 3
store <4 x i32> %223, <4 x i32>* %31, align 16
%224 = extractelement <4 x i32> %22, i32 0
%225 = shl i32 %224, 24
%226 = insertelement <4 x i32> undef, i32 %225, i32 0
%227 = extractelement <4 x i32> %22, i32 1
%228 = shl i32 %227, 24
%229 = lshr i32 %224, 8
%230 = or i32 %228, %229
%231 = insertelement <4 x i32> %226, i32 %230, i32 1
%232 = extractelement <4 x i32> %22, i32 2
%233 = shl i32 %232, 24
%234 = lshr i32 %227, 8
%235 = or i32 %233, %234
%236 = insertelement <4 x i32> %231, i32 %235, i32 2
%237 = extractelement <4 x i32> %22, i32 3
%238 = shl i32 %237, 24
%239 = lshr i32 %232, 8
%240 = or i32 %238, %239
%241 = insertelement <4 x i32> %236, i32 %240, i32 3
store <4 x i32> %241, <4 x i32> addrspace(4)* %27, align 16, !tbaa !7
%242 = lshr i32 %161, 24
%243 = insertelement <4 x i32> undef, i32 %242, i32 3
%244 = lshr i32 %153, 24
%245 = shl i32 %162, 8
%246 = or i32 %244, %245
%247 = insertelement <4 x i32> %243, i32 %246, i32 2
%248 = lshr i32 %144, 24
%249 = shl i32 %153, 8
%250 = or i32 %248, %249
%251 = insertelement <4 x i32> %247, i32 %250, i32 1
%252 = lshr i32 %135, 24
%253 = shl i32 %144, 8
%254 = or i32 %252, %253
%255 = insertelement <4 x i32> %251, i32 %254, i32 0
store <4 x i32> %255, <4 x i32> addrspace(4)* %28, align 16, !tbaa !7
%256 = extractelement <4 x i32> %0, i32 0
%257 = lshr i32 %256, 13
%258 = and i32 %257, 473087
%259 = shl i32 %195, 15
%260 = xor i32 %258, %224
%261 = xor i32 %260, %259
%262 = xor i32 %261, %225
%263 = xor i32 %262, %254
%264 = getelementptr inbounds [8 x <4 x i32>], [8 x <4 x i32>]* %5, i32 0, i32 3
%265 = insertelement <4 x i32> undef, i32 %263, i32 0
%266 = extractelement <4 x i32> %0, i32 1
%267 = lshr i32 %266, 13
%268 = and i32 %267, 475005
%269 = shl i32 %204, 15
%270 = xor i32 %268, %227
%271 = xor i32 %270, %269
%272 = xor i32 %271, %230
%273 = xor i32 %272, %250
%274 = insertelement <4 x i32> %265, i32 %273, i32 1
%275 = extractelement <4 x i32> %0, i32 2
%276 = lshr i32 %275, 13
%277 = and i32 %276, 490365
%278 = shl i32 %213, 15
%279 = xor i32 %277, %232
%280 = xor i32 %279, %278
%281 = xor i32 %280, %235
%282 = xor i32 %281, %246
%283 = insertelement <4 x i32> %274, i32 %282, i32 2
%284 = extractelement <4 x i32> %0, i32 3
%285 = lshr i32 %284, 13
%286 = and i32 %285, 523055
%287 = shl i32 %222, 15
%288 = xor i32 %286, %237
%289 = xor i32 %288, %287
%290 = xor i32 %289, %240
%291 = xor i32 %290, %242
%292 = insertelement <4 x i32> %283, i32 %291, i32 3
store <4 x i32> %292, <4 x i32>* %264, align 16
%293 = uitofp i32 %68 to double
%294 = insertelement <4 x double> undef, double %293, i32 0
%295 = uitofp i32 %78 to double
%296 = insertelement <4 x double> %294, double %295, i32 1
%297 = uitofp i32 %88 to double
%298 = insertelement <4 x double> undef, double %297, i32 0
%299 = uitofp i32 %98 to double
%300 = insertelement <4 x double> %298, double %299, i32 1
%301 = shufflevector <4 x double> %296, <4 x double> %300, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%302 = fdiv <4 x double> %301, <double 0x41F0000000000000, double 0x41F0000000000000, double 0x41F0000000000000, double 0x41F0000000000000>
%303 = uitofp i32 %135 to double
%304 = insertelement <4 x double> undef, double %303, i32 0
%305 = uitofp i32 %144 to double
%306 = insertelement <4 x double> %304, double %305, i32 1
%307 = uitofp i32 %153 to double
%308 = insertelement <4 x double> undef, double %307, i32 0
%309 = uitofp i32 %162 to double
%310 = insertelement <4 x double> %308, double %309, i32 1
%311 = shufflevector <4 x double> %306, <4 x double> %310, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%312 = fdiv <4 x double> %311, <double 0x41F0000000000000, double 0x41F0000000000000, double 0x41F0000000000000, double 0x41F0000000000000>
%313 = extractelement <4 x double> %302, i32 0
%314 = fcmp oge double %313, 0x3FEE0FAA00000000
%315 = fcmp ole double %313, 0x3FF1082C00000000
%316 = and i1 %314, %315
%317 = fadd double %313, -1.000000e+00
%318 = fadd double %317, 2.000000e+00
%319 = fdiv double %317, %318
%320 = fmul double %317, %319
%321 = fadd double %319, %319
%322 = fmul double %321, %321
%323 = fmul double %321, %322
%324 = tail call double @llvm.fma.f64(double %322, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%325 = tail call double @llvm.fma.f64(double %322, double %324, double 0x3F89999999BAC6D4) #6
%326 = tail call double @llvm.fma.f64(double %322, double %325, double 0x3FB55555555554E6) #6
%327 = fsub double -0.000000e+00, %320
%328 = tail call double @llvm.fma.f64(double %323, double %326, double %327) #6
%329 = bitcast double %317 to i64
%330 = and i64 %329, -4294967296
%331 = bitcast i64 %330 to double
%332 = fsub double %317, %331
%333 = fadd double %332, %328
%334 = fmul double %333, 0x3ECB295C17F0BBBE
%335 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %331, double %334) #6
%336 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %333, double %335) #6
%337 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %331, double %336) #6
%338 = bitcast double %313 to i64
%339 = or i64 %338, 274719577269600256
%340 = bitcast i64 %339 to double
%341 = fadd double %340, 0x83D0000000000000
%342 = bitcast double %341 to i64
%343 = icmp ult i64 %338, 4503599627370496
%344 = select i1 %343, i64 %342, i64 %338
%345 = bitcast i64 %344 to <2 x i32>
%346 = extractelement <2 x i32> %345, i32 1
%347 = lshr i32 %346, 20
%348 = and i32 %347, 2047
%349 = select i1 %343, i32 -1083, i32 -1023
%350 = add nsw i32 %348, %349
%351 = and i64 %344, 4503599627370495
%352 = or i64 %351, 4602678819172646912
%353 = bitcast i64 %352 to double
%354 = ashr i32 %346, 13
%355 = lshr i32 %354, 1
%356 = and i32 %355, 63
%357 = or i32 %356, 64
%358 = and i32 %354, 1
%359 = add nuw nsw i32 %357, %358
%360 = add nsw i32 %359, -64
%361 = sext i32 %360 to i64
%362 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %361
%363 = load <2 x double>, <2 x double> addrspace(2)* %362, align 16, !tbaa !7
%364 = extractelement <2 x double> %363, i32 0
%365 = extractelement <2 x double> %363, i32 1
%366 = sitofp i32 %359 to double
%367 = fmul double %366, 7.812500e-03
%368 = fsub double %353, %367
%369 = tail call double @llvm.fma.f64(double %368, double 5.000000e-01, double %367) #6
%370 = fdiv double %368, %369
%371 = fmul double %370, %370
%372 = tail call double @llvm.fma.f64(double %371, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%373 = tail call double @llvm.fma.f64(double %371, double %372, double 0x3FB5555555555557) #6
%374 = fmul double %371, %373
%375 = tail call double @llvm.fma.f64(double %370, double %374, double %370) #6
%376 = fadd double %365, %375
%377 = sitofp i32 %350 to double
%378 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %364, double %377) #6
%379 = fmul double %376, 0x3ECB295C17F0BBBE
%380 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %364, double %379) #6
%381 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %376, double %380) #6
%382 = fadd double %378, %381
%383 = select i1 %316, double %337, double %382
%384 = tail call double @llvm.fabs.f64(double %313) #3
%385 = fcmp oeq double %384, 0x7FF0000000000000
%386 = fcmp uno double %313, 0.000000e+00
%387 = fcmp olt double %313, 0.000000e+00
%388 = or i1 %386, %387
%389 = fcmp oeq double %313, 0.000000e+00
%390 = fmul double %383, 0x3FE62E42FEFA39EF
%391 = select i1 %385, double 0x7FF0000000000000, double %390
%392 = select i1 %388, double 0x7FF8000000000000, double %391
%393 = select i1 %389, double 0xFFF0000000000000, double %392
%394 = insertelement <4 x double> undef, double %393, i32 0
%395 = extractelement <4 x double> %302, i32 1
%396 = fcmp oge double %395, 0x3FEE0FAA00000000
%397 = fcmp ole double %395, 0x3FF1082C00000000
%398 = and i1 %396, %397
%399 = fadd double %395, -1.000000e+00
%400 = fadd double %399, 2.000000e+00
%401 = fdiv double %399, %400
%402 = fmul double %399, %401
%403 = fadd double %401, %401
%404 = fmul double %403, %403
%405 = fmul double %403, %404
%406 = tail call double @llvm.fma.f64(double %404, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%407 = tail call double @llvm.fma.f64(double %404, double %406, double 0x3F89999999BAC6D4) #6
%408 = tail call double @llvm.fma.f64(double %404, double %407, double 0x3FB55555555554E6) #6
%409 = fsub double -0.000000e+00, %402
%410 = tail call double @llvm.fma.f64(double %405, double %408, double %409) #6
%411 = bitcast double %399 to i64
%412 = and i64 %411, -4294967296
%413 = bitcast i64 %412 to double
%414 = fsub double %399, %413
%415 = fadd double %414, %410
%416 = fmul double %415, 0x3ECB295C17F0BBBE
%417 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %413, double %416) #6
%418 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %415, double %417) #6
%419 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %413, double %418) #6
%420 = bitcast double %395 to i64
%421 = or i64 %420, 274719577269600256
%422 = bitcast i64 %421 to double
%423 = fadd double %422, 0x83D0000000000000
%424 = bitcast double %423 to i64
%425 = icmp ult i64 %420, 4503599627370496
%426 = select i1 %425, i64 %424, i64 %420
%427 = bitcast i64 %426 to <2 x i32>
%428 = extractelement <2 x i32> %427, i32 1
%429 = lshr i32 %428, 20
%430 = and i32 %429, 2047
%431 = select i1 %425, i32 -1083, i32 -1023
%432 = add nsw i32 %430, %431
%433 = and i64 %426, 4503599627370495
%434 = or i64 %433, 4602678819172646912
%435 = bitcast i64 %434 to double
%436 = ashr i32 %428, 13
%437 = lshr i32 %436, 1
%438 = and i32 %437, 63
%439 = or i32 %438, 64
%440 = and i32 %436, 1
%441 = add nuw nsw i32 %439, %440
%442 = add nsw i32 %441, -64
%443 = sext i32 %442 to i64
%444 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %443
%445 = load <2 x double>, <2 x double> addrspace(2)* %444, align 16, !tbaa !7
%446 = extractelement <2 x double> %445, i32 0
%447 = extractelement <2 x double> %445, i32 1
%448 = sitofp i32 %441 to double
%449 = fmul double %448, 7.812500e-03
%450 = fsub double %435, %449
%451 = tail call double @llvm.fma.f64(double %450, double 5.000000e-01, double %449) #6
%452 = fdiv double %450, %451
%453 = fmul double %452, %452
%454 = tail call double @llvm.fma.f64(double %453, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%455 = tail call double @llvm.fma.f64(double %453, double %454, double 0x3FB5555555555557) #6
%456 = fmul double %453, %455
%457 = tail call double @llvm.fma.f64(double %452, double %456, double %452) #6
%458 = fadd double %447, %457
%459 = sitofp i32 %432 to double
%460 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %446, double %459) #6
%461 = fmul double %458, 0x3ECB295C17F0BBBE
%462 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %446, double %461) #6
%463 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %458, double %462) #6
%464 = fadd double %460, %463
%465 = select i1 %398, double %419, double %464
%466 = tail call double @llvm.fabs.f64(double %395) #3
%467 = fcmp oeq double %466, 0x7FF0000000000000
%468 = fcmp uno double %395, 0.000000e+00
%469 = fcmp olt double %395, 0.000000e+00
%470 = or i1 %468, %469
%471 = fcmp oeq double %395, 0.000000e+00
%472 = fmul double %465, 0x3FE62E42FEFA39EF
%473 = select i1 %467, double 0x7FF0000000000000, double %472
%474 = select i1 %470, double 0x7FF8000000000000, double %473
%475 = select i1 %471, double 0xFFF0000000000000, double %474
%476 = insertelement <4 x double> %394, double %475, i32 1
%477 = extractelement <4 x double> %302, i32 2
%478 = fcmp oge double %477, 0x3FEE0FAA00000000
%479 = fcmp ole double %477, 0x3FF1082C00000000
%480 = and i1 %478, %479
%481 = fadd double %477, -1.000000e+00
%482 = fadd double %481, 2.000000e+00
%483 = fdiv double %481, %482
%484 = fmul double %481, %483
%485 = fadd double %483, %483
%486 = fmul double %485, %485
%487 = fmul double %485, %486
%488 = tail call double @llvm.fma.f64(double %486, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%489 = tail call double @llvm.fma.f64(double %486, double %488, double 0x3F89999999BAC6D4) #6
%490 = tail call double @llvm.fma.f64(double %486, double %489, double 0x3FB55555555554E6) #6
%491 = fsub double -0.000000e+00, %484
%492 = tail call double @llvm.fma.f64(double %487, double %490, double %491) #6
%493 = bitcast double %481 to i64
%494 = and i64 %493, -4294967296
%495 = bitcast i64 %494 to double
%496 = fsub double %481, %495
%497 = fadd double %496, %492
%498 = fmul double %497, 0x3ECB295C17F0BBBE
%499 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %495, double %498) #6
%500 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %497, double %499) #6
%501 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %495, double %500) #6
%502 = bitcast double %477 to i64
%503 = or i64 %502, 274719577269600256
%504 = bitcast i64 %503 to double
%505 = fadd double %504, 0x83D0000000000000
%506 = bitcast double %505 to i64
%507 = icmp ult i64 %502, 4503599627370496
%508 = select i1 %507, i64 %506, i64 %502
%509 = bitcast i64 %508 to <2 x i32>
%510 = extractelement <2 x i32> %509, i32 1
%511 = lshr i32 %510, 20
%512 = and i32 %511, 2047
%513 = select i1 %507, i32 -1083, i32 -1023
%514 = add nsw i32 %512, %513
%515 = and i64 %508, 4503599627370495
%516 = or i64 %515, 4602678819172646912
%517 = bitcast i64 %516 to double
%518 = ashr i32 %510, 13
%519 = lshr i32 %518, 1
%520 = and i32 %519, 63
%521 = or i32 %520, 64
%522 = and i32 %518, 1
%523 = add nuw nsw i32 %521, %522
%524 = add nsw i32 %523, -64
%525 = sext i32 %524 to i64
%526 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %525
%527 = load <2 x double>, <2 x double> addrspace(2)* %526, align 16, !tbaa !7
%528 = extractelement <2 x double> %527, i32 0
%529 = extractelement <2 x double> %527, i32 1
%530 = sitofp i32 %523 to double
%531 = fmul double %530, 7.812500e-03
%532 = fsub double %517, %531
%533 = tail call double @llvm.fma.f64(double %532, double 5.000000e-01, double %531) #6
%534 = fdiv double %532, %533
%535 = fmul double %534, %534
%536 = tail call double @llvm.fma.f64(double %535, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%537 = tail call double @llvm.fma.f64(double %535, double %536, double 0x3FB5555555555557) #6
%538 = fmul double %535, %537
%539 = tail call double @llvm.fma.f64(double %534, double %538, double %534) #6
%540 = fadd double %529, %539
%541 = sitofp i32 %514 to double
%542 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %528, double %541) #6
%543 = fmul double %540, 0x3ECB295C17F0BBBE
%544 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %528, double %543) #6
%545 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %540, double %544) #6
%546 = fadd double %542, %545
%547 = select i1 %480, double %501, double %546
%548 = tail call double @llvm.fabs.f64(double %477) #3
%549 = fcmp oeq double %548, 0x7FF0000000000000
%550 = fcmp uno double %477, 0.000000e+00
%551 = fcmp olt double %477, 0.000000e+00
%552 = or i1 %550, %551
%553 = fcmp oeq double %477, 0.000000e+00
%554 = fmul double %547, 0x3FE62E42FEFA39EF
%555 = select i1 %549, double 0x7FF0000000000000, double %554
%556 = select i1 %552, double 0x7FF8000000000000, double %555
%557 = select i1 %553, double 0xFFF0000000000000, double %556
%558 = insertelement <4 x double> undef, double %557, i32 0
%559 = extractelement <4 x double> %302, i32 3
%560 = fcmp oge double %559, 0x3FEE0FAA00000000
%561 = fcmp ole double %559, 0x3FF1082C00000000
%562 = and i1 %560, %561
%563 = fadd double %559, -1.000000e+00
%564 = fadd double %563, 2.000000e+00
%565 = fdiv double %563, %564
%566 = fmul double %563, %565
%567 = fadd double %565, %565
%568 = fmul double %567, %567
%569 = fmul double %567, %568
%570 = tail call double @llvm.fma.f64(double %568, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%571 = tail call double @llvm.fma.f64(double %568, double %570, double 0x3F89999999BAC6D4) #6
%572 = tail call double @llvm.fma.f64(double %568, double %571, double 0x3FB55555555554E6) #6
%573 = fsub double -0.000000e+00, %566
%574 = tail call double @llvm.fma.f64(double %569, double %572, double %573) #6
%575 = bitcast double %563 to i64
%576 = and i64 %575, -4294967296
%577 = bitcast i64 %576 to double
%578 = fsub double %563, %577
%579 = fadd double %578, %574
%580 = fmul double %579, 0x3ECB295C17F0BBBE
%581 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %577, double %580) #6
%582 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %579, double %581) #6
%583 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %577, double %582) #6
%584 = bitcast double %559 to i64
%585 = or i64 %584, 274719577269600256
%586 = bitcast i64 %585 to double
%587 = fadd double %586, 0x83D0000000000000
%588 = bitcast double %587 to i64
%589 = icmp ult i64 %584, 4503599627370496
%590 = select i1 %589, i64 %588, i64 %584
%591 = bitcast i64 %590 to <2 x i32>
%592 = extractelement <2 x i32> %591, i32 1
%593 = lshr i32 %592, 20
%594 = and i32 %593, 2047
%595 = select i1 %589, i32 -1083, i32 -1023
%596 = add nsw i32 %594, %595
%597 = and i64 %590, 4503599627370495
%598 = or i64 %597, 4602678819172646912
%599 = bitcast i64 %598 to double
%600 = ashr i32 %592, 13
%601 = lshr i32 %600, 1
%602 = and i32 %601, 63
%603 = or i32 %602, 64
%604 = and i32 %600, 1
%605 = add nuw nsw i32 %603, %604
%606 = add nsw i32 %605, -64
%607 = sext i32 %606 to i64
%608 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %607
%609 = load <2 x double>, <2 x double> addrspace(2)* %608, align 16, !tbaa !7
%610 = extractelement <2 x double> %609, i32 0
%611 = extractelement <2 x double> %609, i32 1
%612 = sitofp i32 %605 to double
%613 = fmul double %612, 7.812500e-03
%614 = fsub double %599, %613
%615 = tail call double @llvm.fma.f64(double %614, double 5.000000e-01, double %613) #6
%616 = fdiv double %614, %615
%617 = fmul double %616, %616
%618 = tail call double @llvm.fma.f64(double %617, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%619 = tail call double @llvm.fma.f64(double %617, double %618, double 0x3FB5555555555557) #6
%620 = fmul double %617, %619
%621 = tail call double @llvm.fma.f64(double %616, double %620, double %616) #6
%622 = fadd double %611, %621
%623 = sitofp i32 %596 to double
%624 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %610, double %623) #6
%625 = fmul double %622, 0x3ECB295C17F0BBBE
%626 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %610, double %625) #6
%627 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %622, double %626) #6
%628 = fadd double %624, %627
%629 = select i1 %562, double %583, double %628
%630 = tail call double @llvm.fabs.f64(double %559) #3
%631 = fcmp oeq double %630, 0x7FF0000000000000
%632 = fcmp uno double %559, 0.000000e+00
%633 = fcmp olt double %559, 0.000000e+00
%634 = or i1 %632, %633
%635 = fcmp oeq double %559, 0.000000e+00
%636 = fmul double %629, 0x3FE62E42FEFA39EF
%637 = select i1 %631, double 0x7FF0000000000000, double %636
%638 = select i1 %634, double 0x7FF8000000000000, double %637
%639 = select i1 %635, double 0xFFF0000000000000, double %638
%640 = insertelement <4 x double> %558, double %639, i32 1
%641 = shufflevector <4 x double> %476, <4 x double> %640, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%642 = fmul <4 x double> %641, <double -2.000000e+00, double -2.000000e+00, double -2.000000e+00, double -2.000000e+00>
%643 = extractelement <4 x double> %642, i32 0
%644 = fcmp olt double %643, 0x1000000000000000
%645 = select i1 %644, i32 256, i32 0
%646 = select i1 %644, i32 -128, i32 0
%647 = tail call double @llvm.amdgcn.ldexp.f64(double %643, i32 %645) #5
%648 = tail call double @llvm.amdgcn.rsq.f64(double %647) #5
%649 = fmul double %647, %648
%650 = fmul double %648, 5.000000e-01
%651 = fsub double -0.000000e+00, %650
%652 = tail call double @llvm.fma.f64(double %651, double %649, double 5.000000e-01) #6
%653 = tail call double @llvm.fma.f64(double %649, double %652, double %649) #6
%654 = fsub double -0.000000e+00, %653
%655 = tail call double @llvm.fma.f64(double %654, double %653, double %647) #6
%656 = tail call double @llvm.fma.f64(double %650, double %652, double %650) #6
%657 = tail call double @llvm.fma.f64(double %655, double %656, double %653) #6
%658 = fsub double -0.000000e+00, %657
%659 = tail call double @llvm.fma.f64(double %658, double %657, double %647) #6
%660 = tail call double @llvm.fma.f64(double %659, double %656, double %657) #6
%661 = tail call double @llvm.amdgcn.ldexp.f64(double %660, i32 %646) #5
%662 = fcmp oeq double %643, 0x7FF0000000000000
%663 = fcmp oeq double %643, 0.000000e+00
%664 = or i1 %662, %663
%665 = select i1 %664, double %647, double %661
%666 = insertelement <4 x double> undef, double %665, i32 0
%667 = extractelement <4 x double> %642, i32 1
%668 = fcmp olt double %667, 0x1000000000000000
%669 = select i1 %668, i32 256, i32 0
%670 = select i1 %668, i32 -128, i32 0
%671 = tail call double @llvm.amdgcn.ldexp.f64(double %667, i32 %669) #5
%672 = tail call double @llvm.amdgcn.rsq.f64(double %671) #5
%673 = fmul double %671, %672
%674 = fmul double %672, 5.000000e-01
%675 = fsub double -0.000000e+00, %674
%676 = tail call double @llvm.fma.f64(double %675, double %673, double 5.000000e-01) #6
%677 = tail call double @llvm.fma.f64(double %673, double %676, double %673) #6
%678 = fsub double -0.000000e+00, %677
%679 = tail call double @llvm.fma.f64(double %678, double %677, double %671) #6
%680 = tail call double @llvm.fma.f64(double %674, double %676, double %674) #6
%681 = tail call double @llvm.fma.f64(double %679, double %680, double %677) #6
%682 = fsub double -0.000000e+00, %681
%683 = tail call double @llvm.fma.f64(double %682, double %681, double %671) #6
%684 = tail call double @llvm.fma.f64(double %683, double %680, double %681) #6
%685 = tail call double @llvm.amdgcn.ldexp.f64(double %684, i32 %670) #5
%686 = fcmp oeq double %667, 0x7FF0000000000000
%687 = fcmp oeq double %667, 0.000000e+00
%688 = or i1 %686, %687
%689 = select i1 %688, double %671, double %685
%690 = insertelement <4 x double> %666, double %689, i32 1
%691 = extractelement <4 x double> %642, i32 2
%692 = fcmp olt double %691, 0x1000000000000000
%693 = select i1 %692, i32 256, i32 0
%694 = select i1 %692, i32 -128, i32 0
%695 = tail call double @llvm.amdgcn.ldexp.f64(double %691, i32 %693) #5
%696 = tail call double @llvm.amdgcn.rsq.f64(double %695) #5
%697 = fmul double %695, %696
%698 = fmul double %696, 5.000000e-01
%699 = fsub double -0.000000e+00, %698
%700 = tail call double @llvm.fma.f64(double %699, double %697, double 5.000000e-01) #6
%701 = tail call double @llvm.fma.f64(double %697, double %700, double %697) #6
%702 = fsub double -0.000000e+00, %701
%703 = tail call double @llvm.fma.f64(double %702, double %701, double %695) #6
%704 = tail call double @llvm.fma.f64(double %698, double %700, double %698) #6
%705 = tail call double @llvm.fma.f64(double %703, double %704, double %701) #6
%706 = fsub double -0.000000e+00, %705
%707 = tail call double @llvm.fma.f64(double %706, double %705, double %695) #6
%708 = tail call double @llvm.fma.f64(double %707, double %704, double %705) #6
%709 = tail call double @llvm.amdgcn.ldexp.f64(double %708, i32 %694) #5
%710 = fcmp oeq double %691, 0x7FF0000000000000
%711 = fcmp oeq double %691, 0.000000e+00
%712 = or i1 %710, %711
%713 = select i1 %712, double %695, double %709
%714 = insertelement <4 x double> undef, double %713, i32 0
%715 = extractelement <4 x double> %642, i32 3
%716 = fcmp olt double %715, 0x1000000000000000
%717 = select i1 %716, i32 256, i32 0
%718 = select i1 %716, i32 -128, i32 0
%719 = tail call double @llvm.amdgcn.ldexp.f64(double %715, i32 %717) #5
%720 = tail call double @llvm.amdgcn.rsq.f64(double %719) #5
%721 = fmul double %719, %720
%722 = fmul double %720, 5.000000e-01
%723 = fsub double -0.000000e+00, %722
%724 = tail call double @llvm.fma.f64(double %723, double %721, double 5.000000e-01) #6
%725 = tail call double @llvm.fma.f64(double %721, double %724, double %721) #6
%726 = fsub double -0.000000e+00, %725
%727 = tail call double @llvm.fma.f64(double %726, double %725, double %719) #6
%728 = tail call double @llvm.fma.f64(double %722, double %724, double %722) #6
%729 = tail call double @llvm.fma.f64(double %727, double %728, double %725) #6
%730 = fsub double -0.000000e+00, %729
%731 = tail call double @llvm.fma.f64(double %730, double %729, double %719) #6
%732 = tail call double @llvm.fma.f64(double %731, double %728, double %729) #6
%733 = tail call double @llvm.amdgcn.ldexp.f64(double %732, i32 %718) #5
%734 = fcmp oeq double %715, 0x7FF0000000000000
%735 = fcmp oeq double %715, 0.000000e+00
%736 = or i1 %734, %735
%737 = select i1 %736, double %719, double %733
%738 = insertelement <4 x double> %714, double %737, i32 1
%739 = shufflevector <4 x double> %690, <4 x double> %738, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%740 = fmul <4 x double> %312, <double 0x401921FB54442D11, double 0x401921FB54442D11, double 0x401921FB54442D11, double 0x401921FB54442D11>
%741 = extractelement <4 x double> %740, i32 0
%742 = tail call double @llvm.fabs.f64(double %741) #6
%743 = fcmp olt double %742, 0x42E0000000000000
br i1 %743, label %744, label %775
; <label>:744: ; preds = %4
%745 = tail call double @llvm.fma.f64(double %742, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%746 = tail call double @llvm.trunc.f64(double %745) #6
%747 = fmul double %746, 0xBFF921FB54442D18
%748 = fsub double -0.000000e+00, %747
%749 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %746, double %748) #6
%750 = fmul double %746, 0xBC91A62633145C06
%751 = fsub double -0.000000e+00, %750
%752 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %746, double %751) #6
%753 = fmul double %746, 0xB94C1CD129024E08
%754 = fsub double -0.000000e+00, %753
%755 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %746, double %754) #6
%756 = fadd double %750, %749
%757 = fsub double %756, %749
%758 = fsub double %750, %757
%759 = fadd double %753, %758
%760 = fadd double %752, %759
%761 = fadd double %755, %760
%762 = fadd double %747, %756
%763 = fsub double %762, %747
%764 = fsub double %756, %763
%765 = fadd double %764, %761
%766 = fsub double %765, %764
%767 = fsub double %761, %766
%768 = fadd double %742, %762
%769 = fadd double %768, %765
%770 = fsub double %769, %768
%771 = fsub double %765, %770
%772 = fadd double %767, %771
%773 = fptosi double %746 to i64
%774 = trunc i64 %773 to i32
br label %1010
; <label>:775: ; preds = %4
%776 = bitcast double %742 to i64
%777 = lshr i64 %776, 52
%778 = trunc i64 %777 to i32
%779 = add nsw i32 %778, -1023
%780 = ashr i32 %779, 3
%781 = add nsw i32 %780, 17
%782 = icmp slt i32 %781, 23
%783 = select i1 %782, i32 23, i32 %781
%784 = sub nsw i32 150, %783
%785 = and i32 %784, -16
%786 = sext i32 %785 to i64
%787 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %786
%788 = bitcast i8 addrspace(2)* %787 to <4 x i32> addrspace(2)*
%789 = load <4 x i32>, <4 x i32> addrspace(2)* %788, align 16, !tbaa !7
%790 = add nsw i32 %785, 16
%791 = sext i32 %790 to i64
%792 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %791
%793 = bitcast i8 addrspace(2)* %792 to <4 x i32> addrspace(2)*
%794 = load <4 x i32>, <4 x i32> addrspace(2)* %793, align 16, !tbaa !7
%795 = add nsw i32 %785, 32
%796 = sext i32 %795 to i64
%797 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %796
%798 = bitcast i8 addrspace(2)* %797 to <4 x i32> addrspace(2)*
%799 = load <4 x i32>, <4 x i32> addrspace(2)* %798, align 16, !tbaa !7
%800 = lshr i32 %784, 2
%801 = and i32 %800, 3
%802 = insertelement <4 x i32> undef, i32 %801, i32 0
%803 = shufflevector <4 x i32> %802, <4 x i32> undef, <4 x i32> zeroinitializer
%804 = icmp eq <4 x i32> %803, <i32 0, i32 1, i32 2, i32 3>
%805 = sext <4 x i1> %804 to <4 x i32>
%806 = extractelement <4 x i32> %805, i32 1
%807 = icmp ne i32 %806, 0
%808 = extractelement <4 x i32> %789, i32 1
%809 = extractelement <4 x i32> %789, i32 0
%810 = select i1 %807, i32 %808, i32 %809
%811 = extractelement <4 x i32> %805, i32 2
%812 = icmp ne i32 %811, 0
%813 = extractelement <4 x i32> %789, i32 2
%814 = select i1 %812, i32 %813, i32 %810
%815 = extractelement <4 x i32> %805, i32 3
%816 = icmp ne i32 %815, 0
%817 = extractelement <4 x i32> %789, i32 3
%818 = select i1 %816, i32 %817, i32 %814
%819 = select i1 %807, i32 %813, i32 %808
%820 = select i1 %812, i32 %817, i32 %819
%821 = extractelement <4 x i32> %794, i32 0
%822 = select i1 %816, i32 %821, i32 %820
%823 = select i1 %807, i32 %817, i32 %813
%824 = select i1 %812, i32 %821, i32 %823
%825 = extractelement <4 x i32> %794, i32 1
%826 = select i1 %816, i32 %825, i32 %824
%827 = select i1 %807, i32 %821, i32 %817
%828 = select i1 %812, i32 %825, i32 %827
%829 = extractelement <4 x i32> %794, i32 2
%830 = select i1 %816, i32 %829, i32 %828
%831 = select i1 %807, i32 %825, i32 %821
%832 = select i1 %812, i32 %829, i32 %831
%833 = extractelement <4 x i32> %794, i32 3
%834 = select i1 %816, i32 %833, i32 %832
%835 = select i1 %807, i32 %829, i32 %825
%836 = select i1 %812, i32 %833, i32 %835
%837 = extractelement <4 x i32> %799, i32 0
%838 = select i1 %816, i32 %837, i32 %836
%839 = select i1 %807, i32 %833, i32 %829
%840 = select i1 %812, i32 %837, i32 %839
%841 = extractelement <4 x i32> %799, i32 1
%842 = select i1 %816, i32 %841, i32 %840
%843 = zext i32 %822 to i64
%844 = shl nuw i64 %843, 32
%845 = zext i32 %818 to i64
%846 = or i64 %844, %845
%847 = shl i32 %784, 3
%848 = zext i32 %847 to i64
%849 = and i64 %848, 24
%850 = ashr i64 %846, %849
%851 = trunc i64 %850 to i32
%852 = zext i32 %826 to i64
%853 = shl nuw i64 %852, 32
%854 = or i64 %853, %843
%855 = ashr i64 %854, %849
%856 = trunc i64 %855 to i32
%857 = zext i32 %830 to i64
%858 = shl nuw i64 %857, 32
%859 = or i64 %858, %852
%860 = ashr i64 %859, %849
%861 = trunc i64 %860 to i32
%862 = zext i32 %834 to i64
%863 = shl nuw i64 %862, 32
%864 = or i64 %863, %857
%865 = ashr i64 %864, %849
%866 = trunc i64 %865 to i32
%867 = zext i32 %838 to i64
%868 = shl nuw i64 %867, 32
%869 = or i64 %868, %862
%870 = ashr i64 %869, %849
%871 = trunc i64 %870 to i32
%872 = zext i32 %842 to i64
%873 = shl nuw i64 %872, 32
%874 = or i64 %873, %867
%875 = ashr i64 %874, %849
%876 = trunc i64 %875 to i32
%877 = shl nsw i32 %783, 3
%878 = or i32 %877, 2
%879 = icmp sgt i32 %878, 1018
%880 = select i1 %879, double 0x3770000000000000, double 1.000000e+00
%881 = fmul double %742, %880
%882 = select i1 %879, i32 136, i32 0
%883 = sub i32 %882, %878
%884 = shl i32 %883, 20
%885 = add i32 %884, 1127219200
%886 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %885, i32 1
%887 = bitcast <2 x i32> %886 to double
%888 = insertelement <2 x i32> undef, i32 %851, i32 0
%889 = and i32 %856, 65535
%890 = or i32 %889, %885
%891 = insertelement <2 x i32> %888, i32 %890, i32 1
%892 = bitcast <2 x i32> %891 to double
%893 = fsub double %892, %887
%894 = add i32 %884, 1177550848
%895 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %894, i32 1
%896 = bitcast <2 x i32> %895 to double
%897 = shl i32 %861, 16
%898 = lshr i32 %856, 16
%899 = or i32 %897, %898
%900 = insertelement <2 x i32> undef, i32 %899, i32 0
%901 = lshr i32 %861, 16
%902 = or i32 %901, %894
%903 = insertelement <2 x i32> %900, i32 %902, i32 1
%904 = bitcast <2 x i32> %903 to double
%905 = fsub double %904, %896
%906 = add i32 %884, 1227882496
%907 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %906, i32 1
%908 = bitcast <2 x i32> %907 to double
%909 = insertelement <2 x i32> undef, i32 %866, i32 0
%910 = and i32 %871, 65535
%911 = or i32 %910, %906
%912 = insertelement <2 x i32> %909, i32 %911, i32 1
%913 = bitcast <2 x i32> %912 to double
%914 = fsub double %913, %908
%915 = add i32 %884, 1278214144
%916 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %915, i32 1
%917 = bitcast <2 x i32> %916 to double
%918 = shl i32 %876, 16
%919 = lshr i32 %871, 16
%920 = or i32 %918, %919
%921 = insertelement <2 x i32> undef, i32 %920, i32 0
%922 = lshr i32 %876, 16
%923 = or i32 %922, %915
%924 = insertelement <2 x i32> %921, i32 %923, i32 1
%925 = bitcast <2 x i32> %924 to double
%926 = fsub double %925, %917
%927 = fmul double %881, %893
%928 = fsub double -0.000000e+00, %927
%929 = tail call double @llvm.fma.f64(double %893, double %881, double %928) #6
%930 = fmul double %881, %905
%931 = fsub double -0.000000e+00, %930
%932 = tail call double @llvm.fma.f64(double %905, double %881, double %931) #6
%933 = fmul double %881, %914
%934 = fsub double -0.000000e+00, %933
%935 = tail call double @llvm.fma.f64(double %914, double %881, double %934) #6
%936 = fmul double %881, %926
%937 = fsub double -0.000000e+00, %936
%938 = tail call double @llvm.fma.f64(double %926, double %881, double %937) #6
%939 = fadd double %933, %936
%940 = fsub double %939, %936
%941 = fsub double %933, %940
%942 = fadd double %938, %941
%943 = fsub double %942, %938
%944 = fsub double %941, %943
%945 = fadd double %930, %942
%946 = fsub double %945, %942
%947 = fsub double %930, %946
%948 = fadd double %944, %947
%949 = fadd double %935, %948
%950 = fsub double %949, %935
%951 = fsub double %948, %950
%952 = fadd double %927, %949
%953 = fsub double %952, %949
%954 = fsub double %927, %953
%955 = fadd double %951, %954
%956 = fadd double %932, %955
%957 = fadd double %929, %956
%958 = fmul double %939, 9.765625e-04
%959 = tail call double @llvm.floor.f64(double %958) #6
%960 = fsub double %958, %959
%961 = tail call double @fmin(double %960, double 0x3FEFFFFFFFFFFFFF) #7
%962 = tail call double @llvm.fabs.f64(double %958) #3
%963 = fcmp oeq double %962, 0x7FF0000000000000
%964 = select i1 %963, double 0.000000e+00, double %961
%965 = fcmp uno double %958, 0.000000e+00
%966 = select i1 %965, double %958, double %964
%967 = fmul double %966, 1.024000e+03
%968 = fadd double %945, %967
%969 = fcmp olt double %968, 0.000000e+00
%970 = select i1 %969, double 1.024000e+03, double 0.000000e+00
%971 = fadd double %967, %970
%972 = fadd double %945, %971
%973 = tail call double @llvm.floor.f64(double %972) #6
%974 = fsub double %972, %973
%975 = tail call double @fmin(double %974, double 0x3FEFFFFFFFFFFFFF) #7
%976 = tail call double @llvm.fabs.f64(double %972) #3
%977 = fcmp oeq double %976, 0x7FF0000000000000
%978 = select i1 %977, double 0.000000e+00, double %975
%979 = fcmp uno double %972, 0.000000e+00
%980 = select i1 %979, double %972, double %978
%981 = fsub double %972, %980
%982 = fptrunc double %981 to float
%983 = fptosi float %982 to i32
%984 = fsub double %971, %981
%985 = fadd double %945, %984
%986 = fsub double %985, %984
%987 = fsub double %945, %986
%988 = fadd double %952, %987
%989 = fsub double %988, %987
%990 = fsub double %952, %989
%991 = fadd double %957, %990
%992 = fcmp oge double %985, 5.000000e-01
%993 = zext i1 %992 to i32
%994 = add nsw i32 %993, %983
%995 = uitofp i1 %992 to float
%996 = fpext float %995 to double
%997 = fsub double %985, %996
%998 = fadd double %988, %997
%999 = fsub double %998, %997
%1000 = fsub double %988, %999
%1001 = fadd double %991, %1000
%1002 = fmul double %998, 0x3FF921FB54442D18
%1003 = fsub double -0.000000e+00, %1002
%1004 = tail call double @llvm.fma.f64(double %998, double 0x3FF921FB54442D18, double %1003) #6
%1005 = tail call double @llvm.fma.f64(double %998, double 0x3C91A62633145C06, double %1004) #6
%1006 = tail call double @llvm.fma.f64(double %1001, double 0x3FF921FB54442D18, double %1005) #6
%1007 = fadd double %1002, %1006
%1008 = fsub double %1007, %1002
%1009 = fsub double %1006, %1008
br label %1010
; <label>:1010: ; preds = %775, %744
%1011 = phi i32 [ %774, %744 ], [ %994, %775 ]
%1012 = phi double [ %769, %744 ], [ %1007, %775 ]
%1013 = phi double [ %772, %744 ], [ %1009, %775 ]
%1014 = and i32 %1011, 2
%1015 = fmul double %1012, %1012
%1016 = fmul double %1012, %1015
%1017 = fmul double %1015, 5.000000e-01
%1018 = fsub double 1.000000e+00, %1017
%1019 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %1015, double 0xBE5AE600B42FDFA7) #6
%1020 = tail call double @llvm.fma.f64(double %1019, double %1015, double 0x3EC71DE3796CDE01) #6
%1021 = tail call double @llvm.fma.f64(double %1020, double %1015, double 0xBF2A01A019E83E5C) #6
%1022 = tail call double @llvm.fma.f64(double %1021, double %1015, double 0x3F81111111110BB3) #6
%1023 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %1015, double 0x3E21EEB69037AB78) #6
%1024 = tail call double @llvm.fma.f64(double %1023, double %1015, double 0xBE927E4FA17F65F6) #6
%1025 = tail call double @llvm.fma.f64(double %1024, double %1015, double 0x3EFA01A019F4EC90) #6
%1026 = tail call double @llvm.fma.f64(double %1025, double %1015, double 0xBF56C16C16C16967) #6
%1027 = tail call double @llvm.fma.f64(double %1026, double %1015, double 0x3FA5555555555555) #6
%1028 = fmul double %1015, %1015
%1029 = fsub double 1.000000e+00, %1018
%1030 = fsub double %1029, %1017
%1031 = tail call double @llvm.fma.f64(double %1012, double %1013, double %1030) #6
%1032 = tail call double @llvm.fma.f64(double %1027, double %1028, double %1031) #6
%1033 = fadd double %1018, %1032
%1034 = fsub double -0.000000e+00, %1016
%1035 = fmul double %1013, 5.000000e-01
%1036 = tail call double @llvm.fma.f64(double %1034, double %1022, double %1035) #6
%1037 = fsub double -0.000000e+00, %1013
%1038 = tail call double @llvm.fma.f64(double %1036, double %1015, double %1037) #6
%1039 = tail call double @llvm.fma.f64(double %1034, double 0xBFC5555555555555, double %1038) #6
%1040 = fsub double %1012, %1039
%1041 = fsub double -0.000000e+00, %1040
%1042 = and i32 %1011, 1
%1043 = icmp ne i32 %1042, 0
%1044 = select i1 %1043, double %1041, double %1033
%1045 = bitcast double %1044 to <2 x i32>
%1046 = icmp ugt i32 %1014, 1
%1047 = zext i1 %1046 to i32
%1048 = shl nuw i32 %1047, 31
%1049 = extractelement <2 x i32> %1045, i32 1
%1050 = xor i32 %1049, %1048
%1051 = insertelement <2 x i32> %1045, i32 %1050, i32 1
%1052 = fcmp uno double %742, 0.000000e+00
%1053 = fcmp oeq double %742, 0x7FF0000000000000
%1054 = or i1 %1053, %1052
%1055 = bitcast <2 x i32> %1051 to double
%1056 = select i1 %1054, double 0x7FF8000000000000, double %1055
%1057 = insertelement <4 x double> undef, double %1056, i32 0
%1058 = extractelement <4 x double> %740, i32 1
%1059 = tail call double @llvm.fabs.f64(double %1058) #6
%1060 = fcmp olt double %1059, 0x42E0000000000000
br i1 %1060, label %1061, label %1092
; <label>:1061: ; preds = %1010
%1062 = tail call double @llvm.fma.f64(double %1059, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%1063 = tail call double @llvm.trunc.f64(double %1062) #6
%1064 = fmul double %1063, 0xBFF921FB54442D18
%1065 = fsub double -0.000000e+00, %1064
%1066 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %1063, double %1065) #6
%1067 = fmul double %1063, 0xBC91A62633145C06
%1068 = fsub double -0.000000e+00, %1067
%1069 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %1063, double %1068) #6
%1070 = fmul double %1063, 0xB94C1CD129024E08
%1071 = fsub double -0.000000e+00, %1070
%1072 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %1063, double %1071) #6
%1073 = fadd double %1067, %1066
%1074 = fsub double %1073, %1066
%1075 = fsub double %1067, %1074
%1076 = fadd double %1070, %1075
%1077 = fadd double %1069, %1076
%1078 = fadd double %1072, %1077
%1079 = fadd double %1064, %1073
%1080 = fsub double %1079, %1064
%1081 = fsub double %1073, %1080
%1082 = fadd double %1081, %1078
%1083 = fsub double %1082, %1081
%1084 = fsub double %1078, %1083
%1085 = fadd double %1059, %1079
%1086 = fadd double %1085, %1082
%1087 = fsub double %1086, %1085
%1088 = fsub double %1082, %1087
%1089 = fadd double %1084, %1088
%1090 = fptosi double %1063 to i64
%1091 = trunc i64 %1090 to i32
br label %1327
; <label>:1092: ; preds = %1010
%1093 = bitcast double %1059 to i64
%1094 = lshr i64 %1093, 52
%1095 = trunc i64 %1094 to i32
%1096 = add nsw i32 %1095, -1023
%1097 = ashr i32 %1096, 3
%1098 = add nsw i32 %1097, 17
%1099 = icmp slt i32 %1098, 23
%1100 = select i1 %1099, i32 23, i32 %1098
%1101 = sub nsw i32 150, %1100
%1102 = and i32 %1101, -16
%1103 = sext i32 %1102 to i64
%1104 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1103
%1105 = bitcast i8 addrspace(2)* %1104 to <4 x i32> addrspace(2)*
%1106 = load <4 x i32>, <4 x i32> addrspace(2)* %1105, align 16, !tbaa !7
%1107 = add nsw i32 %1102, 16
%1108 = sext i32 %1107 to i64
%1109 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1108
%1110 = bitcast i8 addrspace(2)* %1109 to <4 x i32> addrspace(2)*
%1111 = load <4 x i32>, <4 x i32> addrspace(2)* %1110, align 16, !tbaa !7
%1112 = add nsw i32 %1102, 32
%1113 = sext i32 %1112 to i64
%1114 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1113
%1115 = bitcast i8 addrspace(2)* %1114 to <4 x i32> addrspace(2)*
%1116 = load <4 x i32>, <4 x i32> addrspace(2)* %1115, align 16, !tbaa !7
%1117 = lshr i32 %1101, 2
%1118 = and i32 %1117, 3
%1119 = insertelement <4 x i32> undef, i32 %1118, i32 0
%1120 = shufflevector <4 x i32> %1119, <4 x i32> undef, <4 x i32> zeroinitializer
%1121 = icmp eq <4 x i32> %1120, <i32 0, i32 1, i32 2, i32 3>
%1122 = sext <4 x i1> %1121 to <4 x i32>
%1123 = extractelement <4 x i32> %1122, i32 1
%1124 = icmp ne i32 %1123, 0
%1125 = extractelement <4 x i32> %1106, i32 1
%1126 = extractelement <4 x i32> %1106, i32 0
%1127 = select i1 %1124, i32 %1125, i32 %1126
%1128 = extractelement <4 x i32> %1122, i32 2
%1129 = icmp ne i32 %1128, 0
%1130 = extractelement <4 x i32> %1106, i32 2
%1131 = select i1 %1129, i32 %1130, i32 %1127
%1132 = extractelement <4 x i32> %1122, i32 3
%1133 = icmp ne i32 %1132, 0
%1134 = extractelement <4 x i32> %1106, i32 3
%1135 = select i1 %1133, i32 %1134, i32 %1131
%1136 = select i1 %1124, i32 %1130, i32 %1125
%1137 = select i1 %1129, i32 %1134, i32 %1136
%1138 = extractelement <4 x i32> %1111, i32 0
%1139 = select i1 %1133, i32 %1138, i32 %1137
%1140 = select i1 %1124, i32 %1134, i32 %1130
%1141 = select i1 %1129, i32 %1138, i32 %1140
%1142 = extractelement <4 x i32> %1111, i32 1
%1143 = select i1 %1133, i32 %1142, i32 %1141
%1144 = select i1 %1124, i32 %1138, i32 %1134
%1145 = select i1 %1129, i32 %1142, i32 %1144
%1146 = extractelement <4 x i32> %1111, i32 2
%1147 = select i1 %1133, i32 %1146, i32 %1145
%1148 = select i1 %1124, i32 %1142, i32 %1138
%1149 = select i1 %1129, i32 %1146, i32 %1148
%1150 = extractelement <4 x i32> %1111, i32 3
%1151 = select i1 %1133, i32 %1150, i32 %1149
%1152 = select i1 %1124, i32 %1146, i32 %1142
%1153 = select i1 %1129, i32 %1150, i32 %1152
%1154 = extractelement <4 x i32> %1116, i32 0
%1155 = select i1 %1133, i32 %1154, i32 %1153
%1156 = select i1 %1124, i32 %1150, i32 %1146
%1157 = select i1 %1129, i32 %1154, i32 %1156
%1158 = extractelement <4 x i32> %1116, i32 1
%1159 = select i1 %1133, i32 %1158, i32 %1157
%1160 = zext i32 %1139 to i64
%1161 = shl nuw i64 %1160, 32
%1162 = zext i32 %1135 to i64
%1163 = or i64 %1161, %1162
%1164 = shl i32 %1101, 3
%1165 = zext i32 %1164 to i64
%1166 = and i64 %1165, 24
%1167 = ashr i64 %1163, %1166
%1168 = trunc i64 %1167 to i32
%1169 = zext i32 %1143 to i64
%1170 = shl nuw i64 %1169, 32
%1171 = or i64 %1170, %1160
%1172 = ashr i64 %1171, %1166
%1173 = trunc i64 %1172 to i32
%1174 = zext i32 %1147 to i64
%1175 = shl nuw i64 %1174, 32
%1176 = or i64 %1175, %1169
%1177 = ashr i64 %1176, %1166
%1178 = trunc i64 %1177 to i32
%1179 = zext i32 %1151 to i64
%1180 = shl nuw i64 %1179, 32
%1181 = or i64 %1180, %1174
%1182 = ashr i64 %1181, %1166
%1183 = trunc i64 %1182 to i32
%1184 = zext i32 %1155 to i64
%1185 = shl nuw i64 %1184, 32
%1186 = or i64 %1185, %1179
%1187 = ashr i64 %1186, %1166
%1188 = trunc i64 %1187 to i32
%1189 = zext i32 %1159 to i64
%1190 = shl nuw i64 %1189, 32
%1191 = or i64 %1190, %1184
%1192 = ashr i64 %1191, %1166
%1193 = trunc i64 %1192 to i32
%1194 = shl nsw i32 %1100, 3
%1195 = or i32 %1194, 2
%1196 = icmp sgt i32 %1195, 1018
%1197 = select i1 %1196, double 0x3770000000000000, double 1.000000e+00
%1198 = fmul double %1059, %1197
%1199 = select i1 %1196, i32 136, i32 0
%1200 = sub i32 %1199, %1195
%1201 = shl i32 %1200, 20
%1202 = add i32 %1201, 1127219200
%1203 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1202, i32 1
%1204 = bitcast <2 x i32> %1203 to double
%1205 = insertelement <2 x i32> undef, i32 %1168, i32 0
%1206 = and i32 %1173, 65535
%1207 = or i32 %1206, %1202
%1208 = insertelement <2 x i32> %1205, i32 %1207, i32 1
%1209 = bitcast <2 x i32> %1208 to double
%1210 = fsub double %1209, %1204
%1211 = add i32 %1201, 1177550848
%1212 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1211, i32 1
%1213 = bitcast <2 x i32> %1212 to double
%1214 = shl i32 %1178, 16
%1215 = lshr i32 %1173, 16
%1216 = or i32 %1214, %1215
%1217 = insertelement <2 x i32> undef, i32 %1216, i32 0
%1218 = lshr i32 %1178, 16
%1219 = or i32 %1218, %1211
%1220 = insertelement <2 x i32> %1217, i32 %1219, i32 1
%1221 = bitcast <2 x i32> %1220 to double
%1222 = fsub double %1221, %1213
%1223 = add i32 %1201, 1227882496
%1224 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1223, i32 1
%1225 = bitcast <2 x i32> %1224 to double
%1226 = insertelement <2 x i32> undef, i32 %1183, i32 0
%1227 = and i32 %1188, 65535
%1228 = or i32 %1227, %1223
%1229 = insertelement <2 x i32> %1226, i32 %1228, i32 1
%1230 = bitcast <2 x i32> %1229 to double
%1231 = fsub double %1230, %1225
%1232 = add i32 %1201, 1278214144
%1233 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1232, i32 1
%1234 = bitcast <2 x i32> %1233 to double
%1235 = shl i32 %1193, 16
%1236 = lshr i32 %1188, 16
%1237 = or i32 %1235, %1236
%1238 = insertelement <2 x i32> undef, i32 %1237, i32 0
%1239 = lshr i32 %1193, 16
%1240 = or i32 %1239, %1232
%1241 = insertelement <2 x i32> %1238, i32 %1240, i32 1
%1242 = bitcast <2 x i32> %1241 to double
%1243 = fsub double %1242, %1234
%1244 = fmul double %1198, %1210
%1245 = fsub double -0.000000e+00, %1244
%1246 = tail call double @llvm.fma.f64(double %1210, double %1198, double %1245) #6
%1247 = fmul double %1198, %1222
%1248 = fsub double -0.000000e+00, %1247
%1249 = tail call double @llvm.fma.f64(double %1222, double %1198, double %1248) #6
%1250 = fmul double %1198, %1231
%1251 = fsub double -0.000000e+00, %1250
%1252 = tail call double @llvm.fma.f64(double %1231, double %1198, double %1251) #6
%1253 = fmul double %1198, %1243
%1254 = fsub double -0.000000e+00, %1253
%1255 = tail call double @llvm.fma.f64(double %1243, double %1198, double %1254) #6
%1256 = fadd double %1250, %1253
%1257 = fsub double %1256, %1253
%1258 = fsub double %1250, %1257
%1259 = fadd double %1255, %1258
%1260 = fsub double %1259, %1255
%1261 = fsub double %1258, %1260
%1262 = fadd double %1247, %1259
%1263 = fsub double %1262, %1259
%1264 = fsub double %1247, %1263
%1265 = fadd double %1261, %1264
%1266 = fadd double %1252, %1265
%1267 = fsub double %1266, %1252
%1268 = fsub double %1265, %1267
%1269 = fadd double %1244, %1266
%1270 = fsub double %1269, %1266
%1271 = fsub double %1244, %1270
%1272 = fadd double %1268, %1271
%1273 = fadd double %1249, %1272
%1274 = fadd double %1246, %1273
%1275 = fmul double %1256, 9.765625e-04
%1276 = tail call double @llvm.floor.f64(double %1275) #6
%1277 = fsub double %1275, %1276
%1278 = tail call double @fmin(double %1277, double 0x3FEFFFFFFFFFFFFF) #7
%1279 = tail call double @llvm.fabs.f64(double %1275) #3
%1280 = fcmp oeq double %1279, 0x7FF0000000000000
%1281 = select i1 %1280, double 0.000000e+00, double %1278
%1282 = fcmp uno double %1275, 0.000000e+00
%1283 = select i1 %1282, double %1275, double %1281
%1284 = fmul double %1283, 1.024000e+03
%1285 = fadd double %1262, %1284
%1286 = fcmp olt double %1285, 0.000000e+00
%1287 = select i1 %1286, double 1.024000e+03, double 0.000000e+00
%1288 = fadd double %1284, %1287
%1289 = fadd double %1262, %1288
%1290 = tail call double @llvm.floor.f64(double %1289) #6
%1291 = fsub double %1289, %1290
%1292 = tail call double @fmin(double %1291, double 0x3FEFFFFFFFFFFFFF) #7
%1293 = tail call double @llvm.fabs.f64(double %1289) #3
%1294 = fcmp oeq double %1293, 0x7FF0000000000000
%1295 = select i1 %1294, double 0.000000e+00, double %1292
%1296 = fcmp uno double %1289, 0.000000e+00
%1297 = select i1 %1296, double %1289, double %1295
%1298 = fsub double %1289, %1297
%1299 = fptrunc double %1298 to float
%1300 = fptosi float %1299 to i32
%1301 = fsub double %1288, %1298
%1302 = fadd double %1262, %1301
%1303 = fsub double %1302, %1301
%1304 = fsub double %1262, %1303
%1305 = fadd double %1269, %1304
%1306 = fsub double %1305, %1304
%1307 = fsub double %1269, %1306
%1308 = fadd double %1274, %1307
%1309 = fcmp oge double %1302, 5.000000e-01
%1310 = zext i1 %1309 to i32
%1311 = add nsw i32 %1310, %1300
%1312 = uitofp i1 %1309 to float
%1313 = fpext float %1312 to double
%1314 = fsub double %1302, %1313
%1315 = fadd double %1305, %1314
%1316 = fsub double %1315, %1314
%1317 = fsub double %1305, %1316
%1318 = fadd double %1308, %1317
%1319 = fmul double %1315, 0x3FF921FB54442D18
%1320 = fsub double -0.000000e+00, %1319
%1321 = tail call double @llvm.fma.f64(double %1315, double 0x3FF921FB54442D18, double %1320) #6
%1322 = tail call double @llvm.fma.f64(double %1315, double 0x3C91A62633145C06, double %1321) #6
%1323 = tail call double @llvm.fma.f64(double %1318, double 0x3FF921FB54442D18, double %1322) #6
%1324 = fadd double %1319, %1323
%1325 = fsub double %1324, %1319
%1326 = fsub double %1323, %1325
br label %1327
; <label>:1327: ; preds = %1092, %1061
%1328 = phi i32 [ %1091, %1061 ], [ %1311, %1092 ]
%1329 = phi double [ %1086, %1061 ], [ %1324, %1092 ]
%1330 = phi double [ %1089, %1061 ], [ %1326, %1092 ]
%1331 = and i32 %1328, 2
%1332 = fmul double %1329, %1329
%1333 = fmul double %1329, %1332
%1334 = fmul double %1332, 5.000000e-01
%1335 = fsub double 1.000000e+00, %1334
%1336 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %1332, double 0xBE5AE600B42FDFA7) #6
%1337 = tail call double @llvm.fma.f64(double %1336, double %1332, double 0x3EC71DE3796CDE01) #6
%1338 = tail call double @llvm.fma.f64(double %1337, double %1332, double 0xBF2A01A019E83E5C) #6
%1339 = tail call double @llvm.fma.f64(double %1338, double %1332, double 0x3F81111111110BB3) #6
%1340 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %1332, double 0x3E21EEB69037AB78) #6
%1341 = tail call double @llvm.fma.f64(double %1340, double %1332, double 0xBE927E4FA17F65F6) #6
%1342 = tail call double @llvm.fma.f64(double %1341, double %1332, double 0x3EFA01A019F4EC90) #6
%1343 = tail call double @llvm.fma.f64(double %1342, double %1332, double 0xBF56C16C16C16967) #6
%1344 = tail call double @llvm.fma.f64(double %1343, double %1332, double 0x3FA5555555555555) #6
%1345 = fmul double %1332, %1332
%1346 = fsub double 1.000000e+00, %1335
%1347 = fsub double %1346, %1334
%1348 = tail call double @llvm.fma.f64(double %1329, double %1330, double %1347) #6
%1349 = tail call double @llvm.fma.f64(double %1344, double %1345, double %1348) #6
%1350 = fadd double %1335, %1349
%1351 = fsub double -0.000000e+00, %1333
%1352 = fmul double %1330, 5.000000e-01
%1353 = tail call double @llvm.fma.f64(double %1351, double %1339, double %1352) #6
%1354 = fsub double -0.000000e+00, %1330
%1355 = tail call double @llvm.fma.f64(double %1353, double %1332, double %1354) #6
%1356 = tail call double @llvm.fma.f64(double %1351, double 0xBFC5555555555555, double %1355) #6
%1357 = fsub double %1329, %1356
%1358 = fsub double -0.000000e+00, %1357
%1359 = and i32 %1328, 1
%1360 = icmp ne i32 %1359, 0
%1361 = select i1 %1360, double %1358, double %1350
%1362 = bitcast double %1361 to <2 x i32>
%1363 = icmp ugt i32 %1331, 1
%1364 = zext i1 %1363 to i32
%1365 = shl nuw i32 %1364, 31
%1366 = extractelement <2 x i32> %1362, i32 1
%1367 = xor i32 %1366, %1365
%1368 = insertelement <2 x i32> %1362, i32 %1367, i32 1
%1369 = fcmp uno double %1059, 0.000000e+00
%1370 = fcmp oeq double %1059, 0x7FF0000000000000
%1371 = or i1 %1370, %1369
%1372 = bitcast <2 x i32> %1368 to double
%1373 = select i1 %1371, double 0x7FF8000000000000, double %1372
%1374 = insertelement <4 x double> %1057, double %1373, i32 1
%1375 = extractelement <4 x double> %740, i32 2
%1376 = tail call double @llvm.fabs.f64(double %1375) #6
%1377 = fcmp olt double %1376, 0x42E0000000000000
br i1 %1377, label %1378, label %1409
; <label>:1378: ; preds = %1327
%1379 = tail call double @llvm.fma.f64(double %1376, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%1380 = tail call double @llvm.trunc.f64(double %1379) #6
%1381 = fmul double %1380, 0xBFF921FB54442D18
%1382 = fsub double -0.000000e+00, %1381
%1383 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %1380, double %1382) #6
%1384 = fmul double %1380, 0xBC91A62633145C06
%1385 = fsub double -0.000000e+00, %1384
%1386 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %1380, double %1385) #6
%1387 = fmul double %1380, 0xB94C1CD129024E08
%1388 = fsub double -0.000000e+00, %1387
%1389 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %1380, double %1388) #6
%1390 = fadd double %1384, %1383
%1391 = fsub double %1390, %1383
%1392 = fsub double %1384, %1391
%1393 = fadd double %1387, %1392
%1394 = fadd double %1386, %1393
%1395 = fadd double %1389, %1394
%1396 = fadd double %1381, %1390
%1397 = fsub double %1396, %1381
%1398 = fsub double %1390, %1397
%1399 = fadd double %1398, %1395
%1400 = fsub double %1399, %1398
%1401 = fsub double %1395, %1400
%1402 = fadd double %1376, %1396
%1403 = fadd double %1402, %1399
%1404 = fsub double %1403, %1402
%1405 = fsub double %1399, %1404
%1406 = fadd double %1401, %1405
%1407 = fptosi double %1380 to i64
%1408 = trunc i64 %1407 to i32
br label %1644
; <label>:1409: ; preds = %1327
%1410 = bitcast double %1376 to i64
%1411 = lshr i64 %1410, 52
%1412 = trunc i64 %1411 to i32
%1413 = add nsw i32 %1412, -1023
%1414 = ashr i32 %1413, 3
%1415 = add nsw i32 %1414, 17
%1416 = icmp slt i32 %1415, 23
%1417 = select i1 %1416, i32 23, i32 %1415
%1418 = sub nsw i32 150, %1417
%1419 = and i32 %1418, -16
%1420 = sext i32 %1419 to i64
%1421 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1420
%1422 = bitcast i8 addrspace(2)* %1421 to <4 x i32> addrspace(2)*
%1423 = load <4 x i32>, <4 x i32> addrspace(2)* %1422, align 16, !tbaa !7
%1424 = add nsw i32 %1419, 16
%1425 = sext i32 %1424 to i64
%1426 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1425
%1427 = bitcast i8 addrspace(2)* %1426 to <4 x i32> addrspace(2)*
%1428 = load <4 x i32>, <4 x i32> addrspace(2)* %1427, align 16, !tbaa !7
%1429 = add nsw i32 %1419, 32
%1430 = sext i32 %1429 to i64
%1431 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1430
%1432 = bitcast i8 addrspace(2)* %1431 to <4 x i32> addrspace(2)*
%1433 = load <4 x i32>, <4 x i32> addrspace(2)* %1432, align 16, !tbaa !7
%1434 = lshr i32 %1418, 2
%1435 = and i32 %1434, 3
%1436 = insertelement <4 x i32> undef, i32 %1435, i32 0
%1437 = shufflevector <4 x i32> %1436, <4 x i32> undef, <4 x i32> zeroinitializer
%1438 = icmp eq <4 x i32> %1437, <i32 0, i32 1, i32 2, i32 3>
%1439 = sext <4 x i1> %1438 to <4 x i32>
%1440 = extractelement <4 x i32> %1439, i32 1
%1441 = icmp ne i32 %1440, 0
%1442 = extractelement <4 x i32> %1423, i32 1
%1443 = extractelement <4 x i32> %1423, i32 0
%1444 = select i1 %1441, i32 %1442, i32 %1443
%1445 = extractelement <4 x i32> %1439, i32 2
%1446 = icmp ne i32 %1445, 0
%1447 = extractelement <4 x i32> %1423, i32 2
%1448 = select i1 %1446, i32 %1447, i32 %1444
%1449 = extractelement <4 x i32> %1439, i32 3
%1450 = icmp ne i32 %1449, 0
%1451 = extractelement <4 x i32> %1423, i32 3
%1452 = select i1 %1450, i32 %1451, i32 %1448
%1453 = select i1 %1441, i32 %1447, i32 %1442
%1454 = select i1 %1446, i32 %1451, i32 %1453
%1455 = extractelement <4 x i32> %1428, i32 0
%1456 = select i1 %1450, i32 %1455, i32 %1454
%1457 = select i1 %1441, i32 %1451, i32 %1447
%1458 = select i1 %1446, i32 %1455, i32 %1457
%1459 = extractelement <4 x i32> %1428, i32 1
%1460 = select i1 %1450, i32 %1459, i32 %1458
%1461 = select i1 %1441, i32 %1455, i32 %1451
%1462 = select i1 %1446, i32 %1459, i32 %1461
%1463 = extractelement <4 x i32> %1428, i32 2
%1464 = select i1 %1450, i32 %1463, i32 %1462
%1465 = select i1 %1441, i32 %1459, i32 %1455
%1466 = select i1 %1446, i32 %1463, i32 %1465
%1467 = extractelement <4 x i32> %1428, i32 3
%1468 = select i1 %1450, i32 %1467, i32 %1466
%1469 = select i1 %1441, i32 %1463, i32 %1459
%1470 = select i1 %1446, i32 %1467, i32 %1469
%1471 = extractelement <4 x i32> %1433, i32 0
%1472 = select i1 %1450, i32 %1471, i32 %1470
%1473 = select i1 %1441, i32 %1467, i32 %1463
%1474 = select i1 %1446, i32 %1471, i32 %1473
%1475 = extractelement <4 x i32> %1433, i32 1
%1476 = select i1 %1450, i32 %1475, i32 %1474
%1477 = zext i32 %1456 to i64
%1478 = shl nuw i64 %1477, 32
%1479 = zext i32 %1452 to i64
%1480 = or i64 %1478, %1479
%1481 = shl i32 %1418, 3
%1482 = zext i32 %1481 to i64
%1483 = and i64 %1482, 24
%1484 = ashr i64 %1480, %1483
%1485 = trunc i64 %1484 to i32
%1486 = zext i32 %1460 to i64
%1487 = shl nuw i64 %1486, 32
%1488 = or i64 %1487, %1477
%1489 = ashr i64 %1488, %1483
%1490 = trunc i64 %1489 to i32
%1491 = zext i32 %1464 to i64
%1492 = shl nuw i64 %1491, 32
%1493 = or i64 %1492, %1486
%1494 = ashr i64 %1493, %1483
%1495 = trunc i64 %1494 to i32
%1496 = zext i32 %1468 to i64
%1497 = shl nuw i64 %1496, 32
%1498 = or i64 %1497, %1491
%1499 = ashr i64 %1498, %1483
%1500 = trunc i64 %1499 to i32
%1501 = zext i32 %1472 to i64
%1502 = shl nuw i64 %1501, 32
%1503 = or i64 %1502, %1496
%1504 = ashr i64 %1503, %1483
%1505 = trunc i64 %1504 to i32
%1506 = zext i32 %1476 to i64
%1507 = shl nuw i64 %1506, 32
%1508 = or i64 %1507, %1501
%1509 = ashr i64 %1508, %1483
%1510 = trunc i64 %1509 to i32
%1511 = shl nsw i32 %1417, 3
%1512 = or i32 %1511, 2
%1513 = icmp sgt i32 %1512, 1018
%1514 = select i1 %1513, double 0x3770000000000000, double 1.000000e+00
%1515 = fmul double %1376, %1514
%1516 = select i1 %1513, i32 136, i32 0
%1517 = sub i32 %1516, %1512
%1518 = shl i32 %1517, 20
%1519 = add i32 %1518, 1127219200
%1520 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1519, i32 1
%1521 = bitcast <2 x i32> %1520 to double
%1522 = insertelement <2 x i32> undef, i32 %1485, i32 0
%1523 = and i32 %1490, 65535
%1524 = or i32 %1523, %1519
%1525 = insertelement <2 x i32> %1522, i32 %1524, i32 1
%1526 = bitcast <2 x i32> %1525 to double
%1527 = fsub double %1526, %1521
%1528 = add i32 %1518, 1177550848
%1529 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1528, i32 1
%1530 = bitcast <2 x i32> %1529 to double
%1531 = shl i32 %1495, 16
%1532 = lshr i32 %1490, 16
%1533 = or i32 %1531, %1532
%1534 = insertelement <2 x i32> undef, i32 %1533, i32 0
%1535 = lshr i32 %1495, 16
%1536 = or i32 %1535, %1528
%1537 = insertelement <2 x i32> %1534, i32 %1536, i32 1
%1538 = bitcast <2 x i32> %1537 to double
%1539 = fsub double %1538, %1530
%1540 = add i32 %1518, 1227882496
%1541 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1540, i32 1
%1542 = bitcast <2 x i32> %1541 to double
%1543 = insertelement <2 x i32> undef, i32 %1500, i32 0
%1544 = and i32 %1505, 65535
%1545 = or i32 %1544, %1540
%1546 = insertelement <2 x i32> %1543, i32 %1545, i32 1
%1547 = bitcast <2 x i32> %1546 to double
%1548 = fsub double %1547, %1542
%1549 = add i32 %1518, 1278214144
%1550 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1549, i32 1
%1551 = bitcast <2 x i32> %1550 to double
%1552 = shl i32 %1510, 16
%1553 = lshr i32 %1505, 16
%1554 = or i32 %1552, %1553
%1555 = insertelement <2 x i32> undef, i32 %1554, i32 0
%1556 = lshr i32 %1510, 16
%1557 = or i32 %1556, %1549
%1558 = insertelement <2 x i32> %1555, i32 %1557, i32 1
%1559 = bitcast <2 x i32> %1558 to double
%1560 = fsub double %1559, %1551
%1561 = fmul double %1515, %1527
%1562 = fsub double -0.000000e+00, %1561
%1563 = tail call double @llvm.fma.f64(double %1527, double %1515, double %1562) #6
%1564 = fmul double %1515, %1539
%1565 = fsub double -0.000000e+00, %1564
%1566 = tail call double @llvm.fma.f64(double %1539, double %1515, double %1565) #6
%1567 = fmul double %1515, %1548
%1568 = fsub double -0.000000e+00, %1567
%1569 = tail call double @llvm.fma.f64(double %1548, double %1515, double %1568) #6
%1570 = fmul double %1515, %1560
%1571 = fsub double -0.000000e+00, %1570
%1572 = tail call double @llvm.fma.f64(double %1560, double %1515, double %1571) #6
%1573 = fadd double %1567, %1570
%1574 = fsub double %1573, %1570
%1575 = fsub double %1567, %1574
%1576 = fadd double %1572, %1575
%1577 = fsub double %1576, %1572
%1578 = fsub double %1575, %1577
%1579 = fadd double %1564, %1576
%1580 = fsub double %1579, %1576
%1581 = fsub double %1564, %1580
%1582 = fadd double %1578, %1581
%1583 = fadd double %1569, %1582
%1584 = fsub double %1583, %1569
%1585 = fsub double %1582, %1584
%1586 = fadd double %1561, %1583
%1587 = fsub double %1586, %1583
%1588 = fsub double %1561, %1587
%1589 = fadd double %1585, %1588
%1590 = fadd double %1566, %1589
%1591 = fadd double %1563, %1590
%1592 = fmul double %1573, 9.765625e-04
%1593 = tail call double @llvm.floor.f64(double %1592) #6
%1594 = fsub double %1592, %1593
%1595 = tail call double @fmin(double %1594, double 0x3FEFFFFFFFFFFFFF) #7
%1596 = tail call double @llvm.fabs.f64(double %1592) #3
%1597 = fcmp oeq double %1596, 0x7FF0000000000000
%1598 = select i1 %1597, double 0.000000e+00, double %1595
%1599 = fcmp uno double %1592, 0.000000e+00
%1600 = select i1 %1599, double %1592, double %1598
%1601 = fmul double %1600, 1.024000e+03
%1602 = fadd double %1579, %1601
%1603 = fcmp olt double %1602, 0.000000e+00
%1604 = select i1 %1603, double 1.024000e+03, double 0.000000e+00
%1605 = fadd double %1601, %1604
%1606 = fadd double %1579, %1605
%1607 = tail call double @llvm.floor.f64(double %1606) #6
%1608 = fsub double %1606, %1607
%1609 = tail call double @fmin(double %1608, double 0x3FEFFFFFFFFFFFFF) #7
%1610 = tail call double @llvm.fabs.f64(double %1606) #3
%1611 = fcmp oeq double %1610, 0x7FF0000000000000
%1612 = select i1 %1611, double 0.000000e+00, double %1609
%1613 = fcmp uno double %1606, 0.000000e+00
%1614 = select i1 %1613, double %1606, double %1612
%1615 = fsub double %1606, %1614
%1616 = fptrunc double %1615 to float
%1617 = fptosi float %1616 to i32
%1618 = fsub double %1605, %1615
%1619 = fadd double %1579, %1618
%1620 = fsub double %1619, %1618
%1621 = fsub double %1579, %1620
%1622 = fadd double %1586, %1621
%1623 = fsub double %1622, %1621
%1624 = fsub double %1586, %1623
%1625 = fadd double %1591, %1624
%1626 = fcmp oge double %1619, 5.000000e-01
%1627 = zext i1 %1626 to i32
%1628 = add nsw i32 %1627, %1617
%1629 = uitofp i1 %1626 to float
%1630 = fpext float %1629 to double
%1631 = fsub double %1619, %1630
%1632 = fadd double %1622, %1631
%1633 = fsub double %1632, %1631
%1634 = fsub double %1622, %1633
%1635 = fadd double %1625, %1634
%1636 = fmul double %1632, 0x3FF921FB54442D18
%1637 = fsub double -0.000000e+00, %1636
%1638 = tail call double @llvm.fma.f64(double %1632, double 0x3FF921FB54442D18, double %1637) #6
%1639 = tail call double @llvm.fma.f64(double %1632, double 0x3C91A62633145C06, double %1638) #6
%1640 = tail call double @llvm.fma.f64(double %1635, double 0x3FF921FB54442D18, double %1639) #6
%1641 = fadd double %1636, %1640
%1642 = fsub double %1641, %1636
%1643 = fsub double %1640, %1642
br label %1644
; <label>:1644: ; preds = %1409, %1378
%1645 = phi i32 [ %1408, %1378 ], [ %1628, %1409 ]
%1646 = phi double [ %1403, %1378 ], [ %1641, %1409 ]
%1647 = phi double [ %1406, %1378 ], [ %1643, %1409 ]
%1648 = and i32 %1645, 2
%1649 = fmul double %1646, %1646
%1650 = fmul double %1646, %1649
%1651 = fmul double %1649, 5.000000e-01
%1652 = fsub double 1.000000e+00, %1651
%1653 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %1649, double 0xBE5AE600B42FDFA7) #6
%1654 = tail call double @llvm.fma.f64(double %1653, double %1649, double 0x3EC71DE3796CDE01) #6
%1655 = tail call double @llvm.fma.f64(double %1654, double %1649, double 0xBF2A01A019E83E5C) #6
%1656 = tail call double @llvm.fma.f64(double %1655, double %1649, double 0x3F81111111110BB3) #6
%1657 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %1649, double 0x3E21EEB69037AB78) #6
%1658 = tail call double @llvm.fma.f64(double %1657, double %1649, double 0xBE927E4FA17F65F6) #6
%1659 = tail call double @llvm.fma.f64(double %1658, double %1649, double 0x3EFA01A019F4EC90) #6
%1660 = tail call double @llvm.fma.f64(double %1659, double %1649, double 0xBF56C16C16C16967) #6
%1661 = tail call double @llvm.fma.f64(double %1660, double %1649, double 0x3FA5555555555555) #6
%1662 = fmul double %1649, %1649
%1663 = fsub double 1.000000e+00, %1652
%1664 = fsub double %1663, %1651
%1665 = tail call double @llvm.fma.f64(double %1646, double %1647, double %1664) #6
%1666 = tail call double @llvm.fma.f64(double %1661, double %1662, double %1665) #6
%1667 = fadd double %1652, %1666
%1668 = fsub double -0.000000e+00, %1650
%1669 = fmul double %1647, 5.000000e-01
%1670 = tail call double @llvm.fma.f64(double %1668, double %1656, double %1669) #6
%1671 = fsub double -0.000000e+00, %1647
%1672 = tail call double @llvm.fma.f64(double %1670, double %1649, double %1671) #6
%1673 = tail call double @llvm.fma.f64(double %1668, double 0xBFC5555555555555, double %1672) #6
%1674 = fsub double %1646, %1673
%1675 = fsub double -0.000000e+00, %1674
%1676 = and i32 %1645, 1
%1677 = icmp ne i32 %1676, 0
%1678 = select i1 %1677, double %1675, double %1667
%1679 = bitcast double %1678 to <2 x i32>
%1680 = icmp ugt i32 %1648, 1
%1681 = zext i1 %1680 to i32
%1682 = shl nuw i32 %1681, 31
%1683 = extractelement <2 x i32> %1679, i32 1
%1684 = xor i32 %1683, %1682
%1685 = insertelement <2 x i32> %1679, i32 %1684, i32 1
%1686 = fcmp uno double %1376, 0.000000e+00
%1687 = fcmp oeq double %1376, 0x7FF0000000000000
%1688 = or i1 %1687, %1686
%1689 = bitcast <2 x i32> %1685 to double
%1690 = select i1 %1688, double 0x7FF8000000000000, double %1689
%1691 = insertelement <4 x double> undef, double %1690, i32 0
%1692 = extractelement <4 x double> %740, i32 3
%1693 = tail call double @llvm.fabs.f64(double %1692) #6
%1694 = fcmp olt double %1693, 0x42E0000000000000
br i1 %1694, label %1695, label %1726
; <label>:1695: ; preds = %1644
%1696 = tail call double @llvm.fma.f64(double %1693, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%1697 = tail call double @llvm.trunc.f64(double %1696) #6
%1698 = fmul double %1697, 0xBFF921FB54442D18
%1699 = fsub double -0.000000e+00, %1698
%1700 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %1697, double %1699) #6
%1701 = fmul double %1697, 0xBC91A62633145C06
%1702 = fsub double -0.000000e+00, %1701
%1703 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %1697, double %1702) #6
%1704 = fmul double %1697, 0xB94C1CD129024E08
%1705 = fsub double -0.000000e+00, %1704
%1706 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %1697, double %1705) #6
%1707 = fadd double %1701, %1700
%1708 = fsub double %1707, %1700
%1709 = fsub double %1701, %1708
%1710 = fadd double %1704, %1709
%1711 = fadd double %1703, %1710
%1712 = fadd double %1706, %1711
%1713 = fadd double %1698, %1707
%1714 = fsub double %1713, %1698
%1715 = fsub double %1707, %1714
%1716 = fadd double %1715, %1712
%1717 = fsub double %1716, %1715
%1718 = fsub double %1712, %1717
%1719 = fadd double %1693, %1713
%1720 = fadd double %1719, %1716
%1721 = fsub double %1720, %1719
%1722 = fsub double %1716, %1721
%1723 = fadd double %1718, %1722
%1724 = fptosi double %1697 to i64
%1725 = trunc i64 %1724 to i32
br label %1961
; <label>:1726: ; preds = %1644
%1727 = bitcast double %1693 to i64
%1728 = lshr i64 %1727, 52
%1729 = trunc i64 %1728 to i32
%1730 = add nsw i32 %1729, -1023
%1731 = ashr i32 %1730, 3
%1732 = add nsw i32 %1731, 17
%1733 = icmp slt i32 %1732, 23
%1734 = select i1 %1733, i32 23, i32 %1732
%1735 = sub nsw i32 150, %1734
%1736 = and i32 %1735, -16
%1737 = sext i32 %1736 to i64
%1738 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1737
%1739 = bitcast i8 addrspace(2)* %1738 to <4 x i32> addrspace(2)*
%1740 = load <4 x i32>, <4 x i32> addrspace(2)* %1739, align 16, !tbaa !7
%1741 = add nsw i32 %1736, 16
%1742 = sext i32 %1741 to i64
%1743 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1742
%1744 = bitcast i8 addrspace(2)* %1743 to <4 x i32> addrspace(2)*
%1745 = load <4 x i32>, <4 x i32> addrspace(2)* %1744, align 16, !tbaa !7
%1746 = add nsw i32 %1736, 32
%1747 = sext i32 %1746 to i64
%1748 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %1747
%1749 = bitcast i8 addrspace(2)* %1748 to <4 x i32> addrspace(2)*
%1750 = load <4 x i32>, <4 x i32> addrspace(2)* %1749, align 16, !tbaa !7
%1751 = lshr i32 %1735, 2
%1752 = and i32 %1751, 3
%1753 = insertelement <4 x i32> undef, i32 %1752, i32 0
%1754 = shufflevector <4 x i32> %1753, <4 x i32> undef, <4 x i32> zeroinitializer
%1755 = icmp eq <4 x i32> %1754, <i32 0, i32 1, i32 2, i32 3>
%1756 = sext <4 x i1> %1755 to <4 x i32>
%1757 = extractelement <4 x i32> %1756, i32 1
%1758 = icmp ne i32 %1757, 0
%1759 = extractelement <4 x i32> %1740, i32 1
%1760 = extractelement <4 x i32> %1740, i32 0
%1761 = select i1 %1758, i32 %1759, i32 %1760
%1762 = extractelement <4 x i32> %1756, i32 2
%1763 = icmp ne i32 %1762, 0
%1764 = extractelement <4 x i32> %1740, i32 2
%1765 = select i1 %1763, i32 %1764, i32 %1761
%1766 = extractelement <4 x i32> %1756, i32 3
%1767 = icmp ne i32 %1766, 0
%1768 = extractelement <4 x i32> %1740, i32 3
%1769 = select i1 %1767, i32 %1768, i32 %1765
%1770 = select i1 %1758, i32 %1764, i32 %1759
%1771 = select i1 %1763, i32 %1768, i32 %1770
%1772 = extractelement <4 x i32> %1745, i32 0
%1773 = select i1 %1767, i32 %1772, i32 %1771
%1774 = select i1 %1758, i32 %1768, i32 %1764
%1775 = select i1 %1763, i32 %1772, i32 %1774
%1776 = extractelement <4 x i32> %1745, i32 1
%1777 = select i1 %1767, i32 %1776, i32 %1775
%1778 = select i1 %1758, i32 %1772, i32 %1768
%1779 = select i1 %1763, i32 %1776, i32 %1778
%1780 = extractelement <4 x i32> %1745, i32 2
%1781 = select i1 %1767, i32 %1780, i32 %1779
%1782 = select i1 %1758, i32 %1776, i32 %1772
%1783 = select i1 %1763, i32 %1780, i32 %1782
%1784 = extractelement <4 x i32> %1745, i32 3
%1785 = select i1 %1767, i32 %1784, i32 %1783
%1786 = select i1 %1758, i32 %1780, i32 %1776
%1787 = select i1 %1763, i32 %1784, i32 %1786
%1788 = extractelement <4 x i32> %1750, i32 0
%1789 = select i1 %1767, i32 %1788, i32 %1787
%1790 = select i1 %1758, i32 %1784, i32 %1780
%1791 = select i1 %1763, i32 %1788, i32 %1790
%1792 = extractelement <4 x i32> %1750, i32 1
%1793 = select i1 %1767, i32 %1792, i32 %1791
%1794 = zext i32 %1773 to i64
%1795 = shl nuw i64 %1794, 32
%1796 = zext i32 %1769 to i64
%1797 = or i64 %1795, %1796
%1798 = shl i32 %1735, 3
%1799 = zext i32 %1798 to i64
%1800 = and i64 %1799, 24
%1801 = ashr i64 %1797, %1800
%1802 = trunc i64 %1801 to i32
%1803 = zext i32 %1777 to i64
%1804 = shl nuw i64 %1803, 32
%1805 = or i64 %1804, %1794
%1806 = ashr i64 %1805, %1800
%1807 = trunc i64 %1806 to i32
%1808 = zext i32 %1781 to i64
%1809 = shl nuw i64 %1808, 32
%1810 = or i64 %1809, %1803
%1811 = ashr i64 %1810, %1800
%1812 = trunc i64 %1811 to i32
%1813 = zext i32 %1785 to i64
%1814 = shl nuw i64 %1813, 32
%1815 = or i64 %1814, %1808
%1816 = ashr i64 %1815, %1800
%1817 = trunc i64 %1816 to i32
%1818 = zext i32 %1789 to i64
%1819 = shl nuw i64 %1818, 32
%1820 = or i64 %1819, %1813
%1821 = ashr i64 %1820, %1800
%1822 = trunc i64 %1821 to i32
%1823 = zext i32 %1793 to i64
%1824 = shl nuw i64 %1823, 32
%1825 = or i64 %1824, %1818
%1826 = ashr i64 %1825, %1800
%1827 = trunc i64 %1826 to i32
%1828 = shl nsw i32 %1734, 3
%1829 = or i32 %1828, 2
%1830 = icmp sgt i32 %1829, 1018
%1831 = select i1 %1830, double 0x3770000000000000, double 1.000000e+00
%1832 = fmul double %1693, %1831
%1833 = select i1 %1830, i32 136, i32 0
%1834 = sub i32 %1833, %1829
%1835 = shl i32 %1834, 20
%1836 = add i32 %1835, 1127219200
%1837 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1836, i32 1
%1838 = bitcast <2 x i32> %1837 to double
%1839 = insertelement <2 x i32> undef, i32 %1802, i32 0
%1840 = and i32 %1807, 65535
%1841 = or i32 %1840, %1836
%1842 = insertelement <2 x i32> %1839, i32 %1841, i32 1
%1843 = bitcast <2 x i32> %1842 to double
%1844 = fsub double %1843, %1838
%1845 = add i32 %1835, 1177550848
%1846 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1845, i32 1
%1847 = bitcast <2 x i32> %1846 to double
%1848 = shl i32 %1812, 16
%1849 = lshr i32 %1807, 16
%1850 = or i32 %1848, %1849
%1851 = insertelement <2 x i32> undef, i32 %1850, i32 0
%1852 = lshr i32 %1812, 16
%1853 = or i32 %1852, %1845
%1854 = insertelement <2 x i32> %1851, i32 %1853, i32 1
%1855 = bitcast <2 x i32> %1854 to double
%1856 = fsub double %1855, %1847
%1857 = add i32 %1835, 1227882496
%1858 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1857, i32 1
%1859 = bitcast <2 x i32> %1858 to double
%1860 = insertelement <2 x i32> undef, i32 %1817, i32 0
%1861 = and i32 %1822, 65535
%1862 = or i32 %1861, %1857
%1863 = insertelement <2 x i32> %1860, i32 %1862, i32 1
%1864 = bitcast <2 x i32> %1863 to double
%1865 = fsub double %1864, %1859
%1866 = add i32 %1835, 1278214144
%1867 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %1866, i32 1
%1868 = bitcast <2 x i32> %1867 to double
%1869 = shl i32 %1827, 16
%1870 = lshr i32 %1822, 16
%1871 = or i32 %1869, %1870
%1872 = insertelement <2 x i32> undef, i32 %1871, i32 0
%1873 = lshr i32 %1827, 16
%1874 = or i32 %1873, %1866
%1875 = insertelement <2 x i32> %1872, i32 %1874, i32 1
%1876 = bitcast <2 x i32> %1875 to double
%1877 = fsub double %1876, %1868
%1878 = fmul double %1832, %1844
%1879 = fsub double -0.000000e+00, %1878
%1880 = tail call double @llvm.fma.f64(double %1844, double %1832, double %1879) #6
%1881 = fmul double %1832, %1856
%1882 = fsub double -0.000000e+00, %1881
%1883 = tail call double @llvm.fma.f64(double %1856, double %1832, double %1882) #6
%1884 = fmul double %1832, %1865
%1885 = fsub double -0.000000e+00, %1884
%1886 = tail call double @llvm.fma.f64(double %1865, double %1832, double %1885) #6
%1887 = fmul double %1832, %1877
%1888 = fsub double -0.000000e+00, %1887
%1889 = tail call double @llvm.fma.f64(double %1877, double %1832, double %1888) #6
%1890 = fadd double %1884, %1887
%1891 = fsub double %1890, %1887
%1892 = fsub double %1884, %1891
%1893 = fadd double %1889, %1892
%1894 = fsub double %1893, %1889
%1895 = fsub double %1892, %1894
%1896 = fadd double %1881, %1893
%1897 = fsub double %1896, %1893
%1898 = fsub double %1881, %1897
%1899 = fadd double %1895, %1898
%1900 = fadd double %1886, %1899
%1901 = fsub double %1900, %1886
%1902 = fsub double %1899, %1901
%1903 = fadd double %1878, %1900
%1904 = fsub double %1903, %1900
%1905 = fsub double %1878, %1904
%1906 = fadd double %1902, %1905
%1907 = fadd double %1883, %1906
%1908 = fadd double %1880, %1907
%1909 = fmul double %1890, 9.765625e-04
%1910 = tail call double @llvm.floor.f64(double %1909) #6
%1911 = fsub double %1909, %1910
%1912 = tail call double @fmin(double %1911, double 0x3FEFFFFFFFFFFFFF) #7
%1913 = tail call double @llvm.fabs.f64(double %1909) #3
%1914 = fcmp oeq double %1913, 0x7FF0000000000000
%1915 = select i1 %1914, double 0.000000e+00, double %1912
%1916 = fcmp uno double %1909, 0.000000e+00
%1917 = select i1 %1916, double %1909, double %1915
%1918 = fmul double %1917, 1.024000e+03
%1919 = fadd double %1896, %1918
%1920 = fcmp olt double %1919, 0.000000e+00
%1921 = select i1 %1920, double 1.024000e+03, double 0.000000e+00
%1922 = fadd double %1918, %1921
%1923 = fadd double %1896, %1922
%1924 = tail call double @llvm.floor.f64(double %1923) #6
%1925 = fsub double %1923, %1924
%1926 = tail call double @fmin(double %1925, double 0x3FEFFFFFFFFFFFFF) #7
%1927 = tail call double @llvm.fabs.f64(double %1923) #3
%1928 = fcmp oeq double %1927, 0x7FF0000000000000
%1929 = select i1 %1928, double 0.000000e+00, double %1926
%1930 = fcmp uno double %1923, 0.000000e+00
%1931 = select i1 %1930, double %1923, double %1929
%1932 = fsub double %1923, %1931
%1933 = fptrunc double %1932 to float
%1934 = fptosi float %1933 to i32
%1935 = fsub double %1922, %1932
%1936 = fadd double %1896, %1935
%1937 = fsub double %1936, %1935
%1938 = fsub double %1896, %1937
%1939 = fadd double %1903, %1938
%1940 = fsub double %1939, %1938
%1941 = fsub double %1903, %1940
%1942 = fadd double %1908, %1941
%1943 = fcmp oge double %1936, 5.000000e-01
%1944 = zext i1 %1943 to i32
%1945 = add nsw i32 %1944, %1934
%1946 = uitofp i1 %1943 to float
%1947 = fpext float %1946 to double
%1948 = fsub double %1936, %1947
%1949 = fadd double %1939, %1948
%1950 = fsub double %1949, %1948
%1951 = fsub double %1939, %1950
%1952 = fadd double %1942, %1951
%1953 = fmul double %1949, 0x3FF921FB54442D18
%1954 = fsub double -0.000000e+00, %1953
%1955 = tail call double @llvm.fma.f64(double %1949, double 0x3FF921FB54442D18, double %1954) #6
%1956 = tail call double @llvm.fma.f64(double %1949, double 0x3C91A62633145C06, double %1955) #6
%1957 = tail call double @llvm.fma.f64(double %1952, double 0x3FF921FB54442D18, double %1956) #6
%1958 = fadd double %1953, %1957
%1959 = fsub double %1958, %1953
%1960 = fsub double %1957, %1959
br label %1961
; <label>:1961: ; preds = %1695, %1726
%1962 = phi i32 [ %1725, %1695 ], [ %1945, %1726 ]
%1963 = phi double [ %1720, %1695 ], [ %1958, %1726 ]
%1964 = phi double [ %1723, %1695 ], [ %1960, %1726 ]
%1965 = and i32 %1962, 2
%1966 = fmul double %1963, %1963
%1967 = fmul double %1963, %1966
%1968 = fmul double %1966, 5.000000e-01
%1969 = fsub double 1.000000e+00, %1968
%1970 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %1966, double 0xBE5AE600B42FDFA7) #6
%1971 = tail call double @llvm.fma.f64(double %1970, double %1966, double 0x3EC71DE3796CDE01) #6
%1972 = tail call double @llvm.fma.f64(double %1971, double %1966, double 0xBF2A01A019E83E5C) #6
%1973 = tail call double @llvm.fma.f64(double %1972, double %1966, double 0x3F81111111110BB3) #6
%1974 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %1966, double 0x3E21EEB69037AB78) #6
%1975 = tail call double @llvm.fma.f64(double %1974, double %1966, double 0xBE927E4FA17F65F6) #6
%1976 = tail call double @llvm.fma.f64(double %1975, double %1966, double 0x3EFA01A019F4EC90) #6
%1977 = tail call double @llvm.fma.f64(double %1976, double %1966, double 0xBF56C16C16C16967) #6
%1978 = tail call double @llvm.fma.f64(double %1977, double %1966, double 0x3FA5555555555555) #6
%1979 = fmul double %1966, %1966
%1980 = fsub double 1.000000e+00, %1969
%1981 = fsub double %1980, %1968
%1982 = tail call double @llvm.fma.f64(double %1963, double %1964, double %1981) #6
%1983 = tail call double @llvm.fma.f64(double %1978, double %1979, double %1982) #6
%1984 = fadd double %1969, %1983
%1985 = fsub double -0.000000e+00, %1967
%1986 = fmul double %1964, 5.000000e-01
%1987 = tail call double @llvm.fma.f64(double %1985, double %1973, double %1986) #6
%1988 = fsub double -0.000000e+00, %1964
%1989 = tail call double @llvm.fma.f64(double %1987, double %1966, double %1988) #6
%1990 = tail call double @llvm.fma.f64(double %1985, double 0xBFC5555555555555, double %1989) #6
%1991 = fsub double %1963, %1990
%1992 = fsub double -0.000000e+00, %1991
%1993 = and i32 %1962, 1
%1994 = icmp ne i32 %1993, 0
%1995 = select i1 %1994, double %1992, double %1984
%1996 = bitcast double %1995 to <2 x i32>
%1997 = icmp ugt i32 %1965, 1
%1998 = zext i1 %1997 to i32
%1999 = shl nuw i32 %1998, 31
%2000 = extractelement <2 x i32> %1996, i32 1
%2001 = xor i32 %2000, %1999
%2002 = insertelement <2 x i32> %1996, i32 %2001, i32 1
%2003 = fcmp uno double %1693, 0.000000e+00
%2004 = fcmp oeq double %1693, 0x7FF0000000000000
%2005 = or i1 %2004, %2003
%2006 = bitcast <2 x i32> %2002 to double
%2007 = select i1 %2005, double 0x7FF8000000000000, double %2006
%2008 = insertelement <4 x double> %1691, double %2007, i32 1
%2009 = shufflevector <4 x double> %1374, <4 x double> %2008, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%2010 = fmul <4 x double> %739, %2009
store <4 x double> %2010, <4 x double> addrspace(4)* %1, align 32, !tbaa !7
br i1 %743, label %2011, label %2042
; <label>:2011: ; preds = %1961
%2012 = tail call double @llvm.fma.f64(double %742, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%2013 = tail call double @llvm.trunc.f64(double %2012) #6
%2014 = fmul double %2013, 0xBFF921FB54442D18
%2015 = fsub double -0.000000e+00, %2014
%2016 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %2013, double %2015) #6
%2017 = fmul double %2013, 0xBC91A62633145C06
%2018 = fsub double -0.000000e+00, %2017
%2019 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %2013, double %2018) #6
%2020 = fmul double %2013, 0xB94C1CD129024E08
%2021 = fsub double -0.000000e+00, %2020
%2022 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %2013, double %2021) #6
%2023 = fadd double %2017, %2016
%2024 = fsub double %2023, %2016
%2025 = fsub double %2017, %2024
%2026 = fadd double %2020, %2025
%2027 = fadd double %2019, %2026
%2028 = fadd double %2022, %2027
%2029 = fadd double %2014, %2023
%2030 = fsub double %2029, %2014
%2031 = fsub double %2023, %2030
%2032 = fadd double %2031, %2028
%2033 = fsub double %2032, %2031
%2034 = fsub double %2028, %2033
%2035 = fadd double %742, %2029
%2036 = fadd double %2035, %2032
%2037 = fsub double %2036, %2035
%2038 = fsub double %2032, %2037
%2039 = fadd double %2034, %2038
%2040 = fptosi double %2013 to i64
%2041 = trunc i64 %2040 to i32
br label %2277
; <label>:2042: ; preds = %1961
%2043 = bitcast double %742 to i64
%2044 = lshr i64 %2043, 52
%2045 = trunc i64 %2044 to i32
%2046 = add nsw i32 %2045, -1023
%2047 = ashr i32 %2046, 3
%2048 = add nsw i32 %2047, 17
%2049 = icmp slt i32 %2048, 23
%2050 = select i1 %2049, i32 23, i32 %2048
%2051 = sub nsw i32 150, %2050
%2052 = and i32 %2051, -16
%2053 = sext i32 %2052 to i64
%2054 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2053
%2055 = bitcast i8 addrspace(2)* %2054 to <4 x i32> addrspace(2)*
%2056 = load <4 x i32>, <4 x i32> addrspace(2)* %2055, align 16, !tbaa !7
%2057 = add nsw i32 %2052, 16
%2058 = sext i32 %2057 to i64
%2059 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2058
%2060 = bitcast i8 addrspace(2)* %2059 to <4 x i32> addrspace(2)*
%2061 = load <4 x i32>, <4 x i32> addrspace(2)* %2060, align 16, !tbaa !7
%2062 = add nsw i32 %2052, 32
%2063 = sext i32 %2062 to i64
%2064 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2063
%2065 = bitcast i8 addrspace(2)* %2064 to <4 x i32> addrspace(2)*
%2066 = load <4 x i32>, <4 x i32> addrspace(2)* %2065, align 16, !tbaa !7
%2067 = lshr i32 %2051, 2
%2068 = and i32 %2067, 3
%2069 = insertelement <4 x i32> undef, i32 %2068, i32 0
%2070 = shufflevector <4 x i32> %2069, <4 x i32> undef, <4 x i32> zeroinitializer
%2071 = icmp eq <4 x i32> %2070, <i32 0, i32 1, i32 2, i32 3>
%2072 = sext <4 x i1> %2071 to <4 x i32>
%2073 = extractelement <4 x i32> %2072, i32 1
%2074 = icmp ne i32 %2073, 0
%2075 = extractelement <4 x i32> %2056, i32 1
%2076 = extractelement <4 x i32> %2056, i32 0
%2077 = select i1 %2074, i32 %2075, i32 %2076
%2078 = extractelement <4 x i32> %2072, i32 2
%2079 = icmp ne i32 %2078, 0
%2080 = extractelement <4 x i32> %2056, i32 2
%2081 = select i1 %2079, i32 %2080, i32 %2077
%2082 = extractelement <4 x i32> %2072, i32 3
%2083 = icmp ne i32 %2082, 0
%2084 = extractelement <4 x i32> %2056, i32 3
%2085 = select i1 %2083, i32 %2084, i32 %2081
%2086 = select i1 %2074, i32 %2080, i32 %2075
%2087 = select i1 %2079, i32 %2084, i32 %2086
%2088 = extractelement <4 x i32> %2061, i32 0
%2089 = select i1 %2083, i32 %2088, i32 %2087
%2090 = select i1 %2074, i32 %2084, i32 %2080
%2091 = select i1 %2079, i32 %2088, i32 %2090
%2092 = extractelement <4 x i32> %2061, i32 1
%2093 = select i1 %2083, i32 %2092, i32 %2091
%2094 = select i1 %2074, i32 %2088, i32 %2084
%2095 = select i1 %2079, i32 %2092, i32 %2094
%2096 = extractelement <4 x i32> %2061, i32 2
%2097 = select i1 %2083, i32 %2096, i32 %2095
%2098 = select i1 %2074, i32 %2092, i32 %2088
%2099 = select i1 %2079, i32 %2096, i32 %2098
%2100 = extractelement <4 x i32> %2061, i32 3
%2101 = select i1 %2083, i32 %2100, i32 %2099
%2102 = select i1 %2074, i32 %2096, i32 %2092
%2103 = select i1 %2079, i32 %2100, i32 %2102
%2104 = extractelement <4 x i32> %2066, i32 0
%2105 = select i1 %2083, i32 %2104, i32 %2103
%2106 = select i1 %2074, i32 %2100, i32 %2096
%2107 = select i1 %2079, i32 %2104, i32 %2106
%2108 = extractelement <4 x i32> %2066, i32 1
%2109 = select i1 %2083, i32 %2108, i32 %2107
%2110 = zext i32 %2089 to i64
%2111 = shl nuw i64 %2110, 32
%2112 = zext i32 %2085 to i64
%2113 = or i64 %2111, %2112
%2114 = shl i32 %2051, 3
%2115 = zext i32 %2114 to i64
%2116 = and i64 %2115, 24
%2117 = ashr i64 %2113, %2116
%2118 = trunc i64 %2117 to i32
%2119 = zext i32 %2093 to i64
%2120 = shl nuw i64 %2119, 32
%2121 = or i64 %2120, %2110
%2122 = ashr i64 %2121, %2116
%2123 = trunc i64 %2122 to i32
%2124 = zext i32 %2097 to i64
%2125 = shl nuw i64 %2124, 32
%2126 = or i64 %2125, %2119
%2127 = ashr i64 %2126, %2116
%2128 = trunc i64 %2127 to i32
%2129 = zext i32 %2101 to i64
%2130 = shl nuw i64 %2129, 32
%2131 = or i64 %2130, %2124
%2132 = ashr i64 %2131, %2116
%2133 = trunc i64 %2132 to i32
%2134 = zext i32 %2105 to i64
%2135 = shl nuw i64 %2134, 32
%2136 = or i64 %2135, %2129
%2137 = ashr i64 %2136, %2116
%2138 = trunc i64 %2137 to i32
%2139 = zext i32 %2109 to i64
%2140 = shl nuw i64 %2139, 32
%2141 = or i64 %2140, %2134
%2142 = ashr i64 %2141, %2116
%2143 = trunc i64 %2142 to i32
%2144 = shl nsw i32 %2050, 3
%2145 = or i32 %2144, 2
%2146 = icmp sgt i32 %2145, 1018
%2147 = select i1 %2146, double 0x3770000000000000, double 1.000000e+00
%2148 = fmul double %742, %2147
%2149 = select i1 %2146, i32 136, i32 0
%2150 = sub i32 %2149, %2145
%2151 = shl i32 %2150, 20
%2152 = add i32 %2151, 1127219200
%2153 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2152, i32 1
%2154 = bitcast <2 x i32> %2153 to double
%2155 = insertelement <2 x i32> undef, i32 %2118, i32 0
%2156 = and i32 %2123, 65535
%2157 = or i32 %2156, %2152
%2158 = insertelement <2 x i32> %2155, i32 %2157, i32 1
%2159 = bitcast <2 x i32> %2158 to double
%2160 = fsub double %2159, %2154
%2161 = add i32 %2151, 1177550848
%2162 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2161, i32 1
%2163 = bitcast <2 x i32> %2162 to double
%2164 = shl i32 %2128, 16
%2165 = lshr i32 %2123, 16
%2166 = or i32 %2164, %2165
%2167 = insertelement <2 x i32> undef, i32 %2166, i32 0
%2168 = lshr i32 %2128, 16
%2169 = or i32 %2168, %2161
%2170 = insertelement <2 x i32> %2167, i32 %2169, i32 1
%2171 = bitcast <2 x i32> %2170 to double
%2172 = fsub double %2171, %2163
%2173 = add i32 %2151, 1227882496
%2174 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2173, i32 1
%2175 = bitcast <2 x i32> %2174 to double
%2176 = insertelement <2 x i32> undef, i32 %2133, i32 0
%2177 = and i32 %2138, 65535
%2178 = or i32 %2177, %2173
%2179 = insertelement <2 x i32> %2176, i32 %2178, i32 1
%2180 = bitcast <2 x i32> %2179 to double
%2181 = fsub double %2180, %2175
%2182 = add i32 %2151, 1278214144
%2183 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2182, i32 1
%2184 = bitcast <2 x i32> %2183 to double
%2185 = shl i32 %2143, 16
%2186 = lshr i32 %2138, 16
%2187 = or i32 %2185, %2186
%2188 = insertelement <2 x i32> undef, i32 %2187, i32 0
%2189 = lshr i32 %2143, 16
%2190 = or i32 %2189, %2182
%2191 = insertelement <2 x i32> %2188, i32 %2190, i32 1
%2192 = bitcast <2 x i32> %2191 to double
%2193 = fsub double %2192, %2184
%2194 = fmul double %2148, %2160
%2195 = fsub double -0.000000e+00, %2194
%2196 = tail call double @llvm.fma.f64(double %2160, double %2148, double %2195) #6
%2197 = fmul double %2148, %2172
%2198 = fsub double -0.000000e+00, %2197
%2199 = tail call double @llvm.fma.f64(double %2172, double %2148, double %2198) #6
%2200 = fmul double %2148, %2181
%2201 = fsub double -0.000000e+00, %2200
%2202 = tail call double @llvm.fma.f64(double %2181, double %2148, double %2201) #6
%2203 = fmul double %2148, %2193
%2204 = fsub double -0.000000e+00, %2203
%2205 = tail call double @llvm.fma.f64(double %2193, double %2148, double %2204) #6
%2206 = fadd double %2200, %2203
%2207 = fsub double %2206, %2203
%2208 = fsub double %2200, %2207
%2209 = fadd double %2205, %2208
%2210 = fsub double %2209, %2205
%2211 = fsub double %2208, %2210
%2212 = fadd double %2197, %2209
%2213 = fsub double %2212, %2209
%2214 = fsub double %2197, %2213
%2215 = fadd double %2211, %2214
%2216 = fadd double %2202, %2215
%2217 = fsub double %2216, %2202
%2218 = fsub double %2215, %2217
%2219 = fadd double %2194, %2216
%2220 = fsub double %2219, %2216
%2221 = fsub double %2194, %2220
%2222 = fadd double %2218, %2221
%2223 = fadd double %2199, %2222
%2224 = fadd double %2196, %2223
%2225 = fmul double %2206, 9.765625e-04
%2226 = tail call double @llvm.floor.f64(double %2225) #6
%2227 = fsub double %2225, %2226
%2228 = tail call double @fmin(double %2227, double 0x3FEFFFFFFFFFFFFF) #7
%2229 = tail call double @llvm.fabs.f64(double %2225) #3
%2230 = fcmp oeq double %2229, 0x7FF0000000000000
%2231 = select i1 %2230, double 0.000000e+00, double %2228
%2232 = fcmp uno double %2225, 0.000000e+00
%2233 = select i1 %2232, double %2225, double %2231
%2234 = fmul double %2233, 1.024000e+03
%2235 = fadd double %2212, %2234
%2236 = fcmp olt double %2235, 0.000000e+00
%2237 = select i1 %2236, double 1.024000e+03, double 0.000000e+00
%2238 = fadd double %2234, %2237
%2239 = fadd double %2212, %2238
%2240 = tail call double @llvm.floor.f64(double %2239) #6
%2241 = fsub double %2239, %2240
%2242 = tail call double @fmin(double %2241, double 0x3FEFFFFFFFFFFFFF) #7
%2243 = tail call double @llvm.fabs.f64(double %2239) #3
%2244 = fcmp oeq double %2243, 0x7FF0000000000000
%2245 = select i1 %2244, double 0.000000e+00, double %2242
%2246 = fcmp uno double %2239, 0.000000e+00
%2247 = select i1 %2246, double %2239, double %2245
%2248 = fsub double %2239, %2247
%2249 = fptrunc double %2248 to float
%2250 = fptosi float %2249 to i32
%2251 = fsub double %2238, %2248
%2252 = fadd double %2212, %2251
%2253 = fsub double %2252, %2251
%2254 = fsub double %2212, %2253
%2255 = fadd double %2219, %2254
%2256 = fsub double %2255, %2254
%2257 = fsub double %2219, %2256
%2258 = fadd double %2224, %2257
%2259 = fcmp oge double %2252, 5.000000e-01
%2260 = zext i1 %2259 to i32
%2261 = add nsw i32 %2260, %2250
%2262 = uitofp i1 %2259 to float
%2263 = fpext float %2262 to double
%2264 = fsub double %2252, %2263
%2265 = fadd double %2255, %2264
%2266 = fsub double %2265, %2264
%2267 = fsub double %2255, %2266
%2268 = fadd double %2258, %2267
%2269 = fmul double %2265, 0x3FF921FB54442D18
%2270 = fsub double -0.000000e+00, %2269
%2271 = tail call double @llvm.fma.f64(double %2265, double 0x3FF921FB54442D18, double %2270) #6
%2272 = tail call double @llvm.fma.f64(double %2265, double 0x3C91A62633145C06, double %2271) #6
%2273 = tail call double @llvm.fma.f64(double %2268, double 0x3FF921FB54442D18, double %2272) #6
%2274 = fadd double %2269, %2273
%2275 = fsub double %2274, %2269
%2276 = fsub double %2273, %2275
br label %2277
; <label>:2277: ; preds = %2042, %2011
%2278 = phi i32 [ %2041, %2011 ], [ %2261, %2042 ]
%2279 = phi double [ %2036, %2011 ], [ %2274, %2042 ]
%2280 = phi double [ %2039, %2011 ], [ %2276, %2042 ]
%2281 = and i32 %2278, 2
%2282 = fmul double %2279, %2279
%2283 = fmul double %2279, %2282
%2284 = fmul double %2282, 5.000000e-01
%2285 = fsub double 1.000000e+00, %2284
%2286 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %2282, double 0xBE5AE600B42FDFA7) #6
%2287 = tail call double @llvm.fma.f64(double %2286, double %2282, double 0x3EC71DE3796CDE01) #6
%2288 = tail call double @llvm.fma.f64(double %2287, double %2282, double 0xBF2A01A019E83E5C) #6
%2289 = tail call double @llvm.fma.f64(double %2288, double %2282, double 0x3F81111111110BB3) #6
%2290 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %2282, double 0x3E21EEB69037AB78) #6
%2291 = tail call double @llvm.fma.f64(double %2290, double %2282, double 0xBE927E4FA17F65F6) #6
%2292 = tail call double @llvm.fma.f64(double %2291, double %2282, double 0x3EFA01A019F4EC90) #6
%2293 = tail call double @llvm.fma.f64(double %2292, double %2282, double 0xBF56C16C16C16967) #6
%2294 = tail call double @llvm.fma.f64(double %2293, double %2282, double 0x3FA5555555555555) #6
%2295 = fmul double %2282, %2282
%2296 = fsub double 1.000000e+00, %2285
%2297 = fsub double %2296, %2284
%2298 = tail call double @llvm.fma.f64(double %2279, double %2280, double %2297) #6
%2299 = tail call double @llvm.fma.f64(double %2294, double %2295, double %2298) #6
%2300 = fadd double %2285, %2299
%2301 = fsub double -0.000000e+00, %2283
%2302 = fmul double %2280, 5.000000e-01
%2303 = tail call double @llvm.fma.f64(double %2301, double %2289, double %2302) #6
%2304 = fsub double -0.000000e+00, %2280
%2305 = tail call double @llvm.fma.f64(double %2303, double %2282, double %2304) #6
%2306 = tail call double @llvm.fma.f64(double %2301, double 0xBFC5555555555555, double %2305) #6
%2307 = fsub double %2279, %2306
%2308 = and i32 %2278, 1
%2309 = icmp ne i32 %2308, 0
%2310 = select i1 %2309, double %2300, double %2307
%2311 = bitcast double %2310 to <2 x i32>
%2312 = icmp ugt i32 %2281, 1
%2313 = fcmp olt double %741, 0.000000e+00
%2314 = xor i1 %2313, %2312
%2315 = zext i1 %2314 to i32
%2316 = shl nuw i32 %2315, 31
%2317 = extractelement <2 x i32> %2311, i32 1
%2318 = xor i32 %2317, %2316
%2319 = insertelement <2 x i32> %2311, i32 %2318, i32 1
%2320 = fcmp uno double %741, 0.000000e+00
%2321 = or i1 %2320, %1053
%2322 = bitcast <2 x i32> %2319 to double
%2323 = select i1 %2321, double 0x7FF8000000000000, double %2322
%2324 = insertelement <4 x double> undef, double %2323, i32 0
br i1 %1060, label %2325, label %2356
; <label>:2325: ; preds = %2277
%2326 = tail call double @llvm.fma.f64(double %1059, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%2327 = tail call double @llvm.trunc.f64(double %2326) #6
%2328 = fmul double %2327, 0xBFF921FB54442D18
%2329 = fsub double -0.000000e+00, %2328
%2330 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %2327, double %2329) #6
%2331 = fmul double %2327, 0xBC91A62633145C06
%2332 = fsub double -0.000000e+00, %2331
%2333 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %2327, double %2332) #6
%2334 = fmul double %2327, 0xB94C1CD129024E08
%2335 = fsub double -0.000000e+00, %2334
%2336 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %2327, double %2335) #6
%2337 = fadd double %2331, %2330
%2338 = fsub double %2337, %2330
%2339 = fsub double %2331, %2338
%2340 = fadd double %2334, %2339
%2341 = fadd double %2333, %2340
%2342 = fadd double %2336, %2341
%2343 = fadd double %2328, %2337
%2344 = fsub double %2343, %2328
%2345 = fsub double %2337, %2344
%2346 = fadd double %2345, %2342
%2347 = fsub double %2346, %2345
%2348 = fsub double %2342, %2347
%2349 = fadd double %1059, %2343
%2350 = fadd double %2349, %2346
%2351 = fsub double %2350, %2349
%2352 = fsub double %2346, %2351
%2353 = fadd double %2348, %2352
%2354 = fptosi double %2327 to i64
%2355 = trunc i64 %2354 to i32
br label %2591
; <label>:2356: ; preds = %2277
%2357 = bitcast double %1059 to i64
%2358 = lshr i64 %2357, 52
%2359 = trunc i64 %2358 to i32
%2360 = add nsw i32 %2359, -1023
%2361 = ashr i32 %2360, 3
%2362 = add nsw i32 %2361, 17
%2363 = icmp slt i32 %2362, 23
%2364 = select i1 %2363, i32 23, i32 %2362
%2365 = sub nsw i32 150, %2364
%2366 = and i32 %2365, -16
%2367 = sext i32 %2366 to i64
%2368 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2367
%2369 = bitcast i8 addrspace(2)* %2368 to <4 x i32> addrspace(2)*
%2370 = load <4 x i32>, <4 x i32> addrspace(2)* %2369, align 16, !tbaa !7
%2371 = add nsw i32 %2366, 16
%2372 = sext i32 %2371 to i64
%2373 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2372
%2374 = bitcast i8 addrspace(2)* %2373 to <4 x i32> addrspace(2)*
%2375 = load <4 x i32>, <4 x i32> addrspace(2)* %2374, align 16, !tbaa !7
%2376 = add nsw i32 %2366, 32
%2377 = sext i32 %2376 to i64
%2378 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2377
%2379 = bitcast i8 addrspace(2)* %2378 to <4 x i32> addrspace(2)*
%2380 = load <4 x i32>, <4 x i32> addrspace(2)* %2379, align 16, !tbaa !7
%2381 = lshr i32 %2365, 2
%2382 = and i32 %2381, 3
%2383 = insertelement <4 x i32> undef, i32 %2382, i32 0
%2384 = shufflevector <4 x i32> %2383, <4 x i32> undef, <4 x i32> zeroinitializer
%2385 = icmp eq <4 x i32> %2384, <i32 0, i32 1, i32 2, i32 3>
%2386 = sext <4 x i1> %2385 to <4 x i32>
%2387 = extractelement <4 x i32> %2386, i32 1
%2388 = icmp ne i32 %2387, 0
%2389 = extractelement <4 x i32> %2370, i32 1
%2390 = extractelement <4 x i32> %2370, i32 0
%2391 = select i1 %2388, i32 %2389, i32 %2390
%2392 = extractelement <4 x i32> %2386, i32 2
%2393 = icmp ne i32 %2392, 0
%2394 = extractelement <4 x i32> %2370, i32 2
%2395 = select i1 %2393, i32 %2394, i32 %2391
%2396 = extractelement <4 x i32> %2386, i32 3
%2397 = icmp ne i32 %2396, 0
%2398 = extractelement <4 x i32> %2370, i32 3
%2399 = select i1 %2397, i32 %2398, i32 %2395
%2400 = select i1 %2388, i32 %2394, i32 %2389
%2401 = select i1 %2393, i32 %2398, i32 %2400
%2402 = extractelement <4 x i32> %2375, i32 0
%2403 = select i1 %2397, i32 %2402, i32 %2401
%2404 = select i1 %2388, i32 %2398, i32 %2394
%2405 = select i1 %2393, i32 %2402, i32 %2404
%2406 = extractelement <4 x i32> %2375, i32 1
%2407 = select i1 %2397, i32 %2406, i32 %2405
%2408 = select i1 %2388, i32 %2402, i32 %2398
%2409 = select i1 %2393, i32 %2406, i32 %2408
%2410 = extractelement <4 x i32> %2375, i32 2
%2411 = select i1 %2397, i32 %2410, i32 %2409
%2412 = select i1 %2388, i32 %2406, i32 %2402
%2413 = select i1 %2393, i32 %2410, i32 %2412
%2414 = extractelement <4 x i32> %2375, i32 3
%2415 = select i1 %2397, i32 %2414, i32 %2413
%2416 = select i1 %2388, i32 %2410, i32 %2406
%2417 = select i1 %2393, i32 %2414, i32 %2416
%2418 = extractelement <4 x i32> %2380, i32 0
%2419 = select i1 %2397, i32 %2418, i32 %2417
%2420 = select i1 %2388, i32 %2414, i32 %2410
%2421 = select i1 %2393, i32 %2418, i32 %2420
%2422 = extractelement <4 x i32> %2380, i32 1
%2423 = select i1 %2397, i32 %2422, i32 %2421
%2424 = zext i32 %2403 to i64
%2425 = shl nuw i64 %2424, 32
%2426 = zext i32 %2399 to i64
%2427 = or i64 %2425, %2426
%2428 = shl i32 %2365, 3
%2429 = zext i32 %2428 to i64
%2430 = and i64 %2429, 24
%2431 = ashr i64 %2427, %2430
%2432 = trunc i64 %2431 to i32
%2433 = zext i32 %2407 to i64
%2434 = shl nuw i64 %2433, 32
%2435 = or i64 %2434, %2424
%2436 = ashr i64 %2435, %2430
%2437 = trunc i64 %2436 to i32
%2438 = zext i32 %2411 to i64
%2439 = shl nuw i64 %2438, 32
%2440 = or i64 %2439, %2433
%2441 = ashr i64 %2440, %2430
%2442 = trunc i64 %2441 to i32
%2443 = zext i32 %2415 to i64
%2444 = shl nuw i64 %2443, 32
%2445 = or i64 %2444, %2438
%2446 = ashr i64 %2445, %2430
%2447 = trunc i64 %2446 to i32
%2448 = zext i32 %2419 to i64
%2449 = shl nuw i64 %2448, 32
%2450 = or i64 %2449, %2443
%2451 = ashr i64 %2450, %2430
%2452 = trunc i64 %2451 to i32
%2453 = zext i32 %2423 to i64
%2454 = shl nuw i64 %2453, 32
%2455 = or i64 %2454, %2448
%2456 = ashr i64 %2455, %2430
%2457 = trunc i64 %2456 to i32
%2458 = shl nsw i32 %2364, 3
%2459 = or i32 %2458, 2
%2460 = icmp sgt i32 %2459, 1018
%2461 = select i1 %2460, double 0x3770000000000000, double 1.000000e+00
%2462 = fmul double %1059, %2461
%2463 = select i1 %2460, i32 136, i32 0
%2464 = sub i32 %2463, %2459
%2465 = shl i32 %2464, 20
%2466 = add i32 %2465, 1127219200
%2467 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2466, i32 1
%2468 = bitcast <2 x i32> %2467 to double
%2469 = insertelement <2 x i32> undef, i32 %2432, i32 0
%2470 = and i32 %2437, 65535
%2471 = or i32 %2470, %2466
%2472 = insertelement <2 x i32> %2469, i32 %2471, i32 1
%2473 = bitcast <2 x i32> %2472 to double
%2474 = fsub double %2473, %2468
%2475 = add i32 %2465, 1177550848
%2476 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2475, i32 1
%2477 = bitcast <2 x i32> %2476 to double
%2478 = shl i32 %2442, 16
%2479 = lshr i32 %2437, 16
%2480 = or i32 %2478, %2479
%2481 = insertelement <2 x i32> undef, i32 %2480, i32 0
%2482 = lshr i32 %2442, 16
%2483 = or i32 %2482, %2475
%2484 = insertelement <2 x i32> %2481, i32 %2483, i32 1
%2485 = bitcast <2 x i32> %2484 to double
%2486 = fsub double %2485, %2477
%2487 = add i32 %2465, 1227882496
%2488 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2487, i32 1
%2489 = bitcast <2 x i32> %2488 to double
%2490 = insertelement <2 x i32> undef, i32 %2447, i32 0
%2491 = and i32 %2452, 65535
%2492 = or i32 %2491, %2487
%2493 = insertelement <2 x i32> %2490, i32 %2492, i32 1
%2494 = bitcast <2 x i32> %2493 to double
%2495 = fsub double %2494, %2489
%2496 = add i32 %2465, 1278214144
%2497 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2496, i32 1
%2498 = bitcast <2 x i32> %2497 to double
%2499 = shl i32 %2457, 16
%2500 = lshr i32 %2452, 16
%2501 = or i32 %2499, %2500
%2502 = insertelement <2 x i32> undef, i32 %2501, i32 0
%2503 = lshr i32 %2457, 16
%2504 = or i32 %2503, %2496
%2505 = insertelement <2 x i32> %2502, i32 %2504, i32 1
%2506 = bitcast <2 x i32> %2505 to double
%2507 = fsub double %2506, %2498
%2508 = fmul double %2462, %2474
%2509 = fsub double -0.000000e+00, %2508
%2510 = tail call double @llvm.fma.f64(double %2474, double %2462, double %2509) #6
%2511 = fmul double %2462, %2486
%2512 = fsub double -0.000000e+00, %2511
%2513 = tail call double @llvm.fma.f64(double %2486, double %2462, double %2512) #6
%2514 = fmul double %2462, %2495
%2515 = fsub double -0.000000e+00, %2514
%2516 = tail call double @llvm.fma.f64(double %2495, double %2462, double %2515) #6
%2517 = fmul double %2462, %2507
%2518 = fsub double -0.000000e+00, %2517
%2519 = tail call double @llvm.fma.f64(double %2507, double %2462, double %2518) #6
%2520 = fadd double %2514, %2517
%2521 = fsub double %2520, %2517
%2522 = fsub double %2514, %2521
%2523 = fadd double %2519, %2522
%2524 = fsub double %2523, %2519
%2525 = fsub double %2522, %2524
%2526 = fadd double %2511, %2523
%2527 = fsub double %2526, %2523
%2528 = fsub double %2511, %2527
%2529 = fadd double %2525, %2528
%2530 = fadd double %2516, %2529
%2531 = fsub double %2530, %2516
%2532 = fsub double %2529, %2531
%2533 = fadd double %2508, %2530
%2534 = fsub double %2533, %2530
%2535 = fsub double %2508, %2534
%2536 = fadd double %2532, %2535
%2537 = fadd double %2513, %2536
%2538 = fadd double %2510, %2537
%2539 = fmul double %2520, 9.765625e-04
%2540 = tail call double @llvm.floor.f64(double %2539) #6
%2541 = fsub double %2539, %2540
%2542 = tail call double @fmin(double %2541, double 0x3FEFFFFFFFFFFFFF) #7
%2543 = tail call double @llvm.fabs.f64(double %2539) #3
%2544 = fcmp oeq double %2543, 0x7FF0000000000000
%2545 = select i1 %2544, double 0.000000e+00, double %2542
%2546 = fcmp uno double %2539, 0.000000e+00
%2547 = select i1 %2546, double %2539, double %2545
%2548 = fmul double %2547, 1.024000e+03
%2549 = fadd double %2526, %2548
%2550 = fcmp olt double %2549, 0.000000e+00
%2551 = select i1 %2550, double 1.024000e+03, double 0.000000e+00
%2552 = fadd double %2548, %2551
%2553 = fadd double %2526, %2552
%2554 = tail call double @llvm.floor.f64(double %2553) #6
%2555 = fsub double %2553, %2554
%2556 = tail call double @fmin(double %2555, double 0x3FEFFFFFFFFFFFFF) #7
%2557 = tail call double @llvm.fabs.f64(double %2553) #3
%2558 = fcmp oeq double %2557, 0x7FF0000000000000
%2559 = select i1 %2558, double 0.000000e+00, double %2556
%2560 = fcmp uno double %2553, 0.000000e+00
%2561 = select i1 %2560, double %2553, double %2559
%2562 = fsub double %2553, %2561
%2563 = fptrunc double %2562 to float
%2564 = fptosi float %2563 to i32
%2565 = fsub double %2552, %2562
%2566 = fadd double %2526, %2565
%2567 = fsub double %2566, %2565
%2568 = fsub double %2526, %2567
%2569 = fadd double %2533, %2568
%2570 = fsub double %2569, %2568
%2571 = fsub double %2533, %2570
%2572 = fadd double %2538, %2571
%2573 = fcmp oge double %2566, 5.000000e-01
%2574 = zext i1 %2573 to i32
%2575 = add nsw i32 %2574, %2564
%2576 = uitofp i1 %2573 to float
%2577 = fpext float %2576 to double
%2578 = fsub double %2566, %2577
%2579 = fadd double %2569, %2578
%2580 = fsub double %2579, %2578
%2581 = fsub double %2569, %2580
%2582 = fadd double %2572, %2581
%2583 = fmul double %2579, 0x3FF921FB54442D18
%2584 = fsub double -0.000000e+00, %2583
%2585 = tail call double @llvm.fma.f64(double %2579, double 0x3FF921FB54442D18, double %2584) #6
%2586 = tail call double @llvm.fma.f64(double %2579, double 0x3C91A62633145C06, double %2585) #6
%2587 = tail call double @llvm.fma.f64(double %2582, double 0x3FF921FB54442D18, double %2586) #6
%2588 = fadd double %2583, %2587
%2589 = fsub double %2588, %2583
%2590 = fsub double %2587, %2589
br label %2591
; <label>:2591: ; preds = %2356, %2325
%2592 = phi i32 [ %2355, %2325 ], [ %2575, %2356 ]
%2593 = phi double [ %2350, %2325 ], [ %2588, %2356 ]
%2594 = phi double [ %2353, %2325 ], [ %2590, %2356 ]
%2595 = and i32 %2592, 2
%2596 = fmul double %2593, %2593
%2597 = fmul double %2593, %2596
%2598 = fmul double %2596, 5.000000e-01
%2599 = fsub double 1.000000e+00, %2598
%2600 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %2596, double 0xBE5AE600B42FDFA7) #6
%2601 = tail call double @llvm.fma.f64(double %2600, double %2596, double 0x3EC71DE3796CDE01) #6
%2602 = tail call double @llvm.fma.f64(double %2601, double %2596, double 0xBF2A01A019E83E5C) #6
%2603 = tail call double @llvm.fma.f64(double %2602, double %2596, double 0x3F81111111110BB3) #6
%2604 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %2596, double 0x3E21EEB69037AB78) #6
%2605 = tail call double @llvm.fma.f64(double %2604, double %2596, double 0xBE927E4FA17F65F6) #6
%2606 = tail call double @llvm.fma.f64(double %2605, double %2596, double 0x3EFA01A019F4EC90) #6
%2607 = tail call double @llvm.fma.f64(double %2606, double %2596, double 0xBF56C16C16C16967) #6
%2608 = tail call double @llvm.fma.f64(double %2607, double %2596, double 0x3FA5555555555555) #6
%2609 = fmul double %2596, %2596
%2610 = fsub double 1.000000e+00, %2599
%2611 = fsub double %2610, %2598
%2612 = tail call double @llvm.fma.f64(double %2593, double %2594, double %2611) #6
%2613 = tail call double @llvm.fma.f64(double %2608, double %2609, double %2612) #6
%2614 = fadd double %2599, %2613
%2615 = fsub double -0.000000e+00, %2597
%2616 = fmul double %2594, 5.000000e-01
%2617 = tail call double @llvm.fma.f64(double %2615, double %2603, double %2616) #6
%2618 = fsub double -0.000000e+00, %2594
%2619 = tail call double @llvm.fma.f64(double %2617, double %2596, double %2618) #6
%2620 = tail call double @llvm.fma.f64(double %2615, double 0xBFC5555555555555, double %2619) #6
%2621 = fsub double %2593, %2620
%2622 = and i32 %2592, 1
%2623 = icmp ne i32 %2622, 0
%2624 = select i1 %2623, double %2614, double %2621
%2625 = bitcast double %2624 to <2 x i32>
%2626 = icmp ugt i32 %2595, 1
%2627 = fcmp olt double %1058, 0.000000e+00
%2628 = xor i1 %2627, %2626
%2629 = zext i1 %2628 to i32
%2630 = shl nuw i32 %2629, 31
%2631 = extractelement <2 x i32> %2625, i32 1
%2632 = xor i32 %2631, %2630
%2633 = insertelement <2 x i32> %2625, i32 %2632, i32 1
%2634 = fcmp uno double %1058, 0.000000e+00
%2635 = or i1 %2634, %1370
%2636 = bitcast <2 x i32> %2633 to double
%2637 = select i1 %2635, double 0x7FF8000000000000, double %2636
%2638 = insertelement <4 x double> %2324, double %2637, i32 1
br i1 %1377, label %2639, label %2670
; <label>:2639: ; preds = %2591
%2640 = tail call double @llvm.fma.f64(double %1376, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%2641 = tail call double @llvm.trunc.f64(double %2640) #6
%2642 = fmul double %2641, 0xBFF921FB54442D18
%2643 = fsub double -0.000000e+00, %2642
%2644 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %2641, double %2643) #6
%2645 = fmul double %2641, 0xBC91A62633145C06
%2646 = fsub double -0.000000e+00, %2645
%2647 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %2641, double %2646) #6
%2648 = fmul double %2641, 0xB94C1CD129024E08
%2649 = fsub double -0.000000e+00, %2648
%2650 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %2641, double %2649) #6
%2651 = fadd double %2645, %2644
%2652 = fsub double %2651, %2644
%2653 = fsub double %2645, %2652
%2654 = fadd double %2648, %2653
%2655 = fadd double %2647, %2654
%2656 = fadd double %2650, %2655
%2657 = fadd double %2642, %2651
%2658 = fsub double %2657, %2642
%2659 = fsub double %2651, %2658
%2660 = fadd double %2659, %2656
%2661 = fsub double %2660, %2659
%2662 = fsub double %2656, %2661
%2663 = fadd double %1376, %2657
%2664 = fadd double %2663, %2660
%2665 = fsub double %2664, %2663
%2666 = fsub double %2660, %2665
%2667 = fadd double %2662, %2666
%2668 = fptosi double %2641 to i64
%2669 = trunc i64 %2668 to i32
br label %2905
; <label>:2670: ; preds = %2591
%2671 = bitcast double %1376 to i64
%2672 = lshr i64 %2671, 52
%2673 = trunc i64 %2672 to i32
%2674 = add nsw i32 %2673, -1023
%2675 = ashr i32 %2674, 3
%2676 = add nsw i32 %2675, 17
%2677 = icmp slt i32 %2676, 23
%2678 = select i1 %2677, i32 23, i32 %2676
%2679 = sub nsw i32 150, %2678
%2680 = and i32 %2679, -16
%2681 = sext i32 %2680 to i64
%2682 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2681
%2683 = bitcast i8 addrspace(2)* %2682 to <4 x i32> addrspace(2)*
%2684 = load <4 x i32>, <4 x i32> addrspace(2)* %2683, align 16, !tbaa !7
%2685 = add nsw i32 %2680, 16
%2686 = sext i32 %2685 to i64
%2687 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2686
%2688 = bitcast i8 addrspace(2)* %2687 to <4 x i32> addrspace(2)*
%2689 = load <4 x i32>, <4 x i32> addrspace(2)* %2688, align 16, !tbaa !7
%2690 = add nsw i32 %2680, 32
%2691 = sext i32 %2690 to i64
%2692 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2691
%2693 = bitcast i8 addrspace(2)* %2692 to <4 x i32> addrspace(2)*
%2694 = load <4 x i32>, <4 x i32> addrspace(2)* %2693, align 16, !tbaa !7
%2695 = lshr i32 %2679, 2
%2696 = and i32 %2695, 3
%2697 = insertelement <4 x i32> undef, i32 %2696, i32 0
%2698 = shufflevector <4 x i32> %2697, <4 x i32> undef, <4 x i32> zeroinitializer
%2699 = icmp eq <4 x i32> %2698, <i32 0, i32 1, i32 2, i32 3>
%2700 = sext <4 x i1> %2699 to <4 x i32>
%2701 = extractelement <4 x i32> %2700, i32 1
%2702 = icmp ne i32 %2701, 0
%2703 = extractelement <4 x i32> %2684, i32 1
%2704 = extractelement <4 x i32> %2684, i32 0
%2705 = select i1 %2702, i32 %2703, i32 %2704
%2706 = extractelement <4 x i32> %2700, i32 2
%2707 = icmp ne i32 %2706, 0
%2708 = extractelement <4 x i32> %2684, i32 2
%2709 = select i1 %2707, i32 %2708, i32 %2705
%2710 = extractelement <4 x i32> %2700, i32 3
%2711 = icmp ne i32 %2710, 0
%2712 = extractelement <4 x i32> %2684, i32 3
%2713 = select i1 %2711, i32 %2712, i32 %2709
%2714 = select i1 %2702, i32 %2708, i32 %2703
%2715 = select i1 %2707, i32 %2712, i32 %2714
%2716 = extractelement <4 x i32> %2689, i32 0
%2717 = select i1 %2711, i32 %2716, i32 %2715
%2718 = select i1 %2702, i32 %2712, i32 %2708
%2719 = select i1 %2707, i32 %2716, i32 %2718
%2720 = extractelement <4 x i32> %2689, i32 1
%2721 = select i1 %2711, i32 %2720, i32 %2719
%2722 = select i1 %2702, i32 %2716, i32 %2712
%2723 = select i1 %2707, i32 %2720, i32 %2722
%2724 = extractelement <4 x i32> %2689, i32 2
%2725 = select i1 %2711, i32 %2724, i32 %2723
%2726 = select i1 %2702, i32 %2720, i32 %2716
%2727 = select i1 %2707, i32 %2724, i32 %2726
%2728 = extractelement <4 x i32> %2689, i32 3
%2729 = select i1 %2711, i32 %2728, i32 %2727
%2730 = select i1 %2702, i32 %2724, i32 %2720
%2731 = select i1 %2707, i32 %2728, i32 %2730
%2732 = extractelement <4 x i32> %2694, i32 0
%2733 = select i1 %2711, i32 %2732, i32 %2731
%2734 = select i1 %2702, i32 %2728, i32 %2724
%2735 = select i1 %2707, i32 %2732, i32 %2734
%2736 = extractelement <4 x i32> %2694, i32 1
%2737 = select i1 %2711, i32 %2736, i32 %2735
%2738 = zext i32 %2717 to i64
%2739 = shl nuw i64 %2738, 32
%2740 = zext i32 %2713 to i64
%2741 = or i64 %2739, %2740
%2742 = shl i32 %2679, 3
%2743 = zext i32 %2742 to i64
%2744 = and i64 %2743, 24
%2745 = ashr i64 %2741, %2744
%2746 = trunc i64 %2745 to i32
%2747 = zext i32 %2721 to i64
%2748 = shl nuw i64 %2747, 32
%2749 = or i64 %2748, %2738
%2750 = ashr i64 %2749, %2744
%2751 = trunc i64 %2750 to i32
%2752 = zext i32 %2725 to i64
%2753 = shl nuw i64 %2752, 32
%2754 = or i64 %2753, %2747
%2755 = ashr i64 %2754, %2744
%2756 = trunc i64 %2755 to i32
%2757 = zext i32 %2729 to i64
%2758 = shl nuw i64 %2757, 32
%2759 = or i64 %2758, %2752
%2760 = ashr i64 %2759, %2744
%2761 = trunc i64 %2760 to i32
%2762 = zext i32 %2733 to i64
%2763 = shl nuw i64 %2762, 32
%2764 = or i64 %2763, %2757
%2765 = ashr i64 %2764, %2744
%2766 = trunc i64 %2765 to i32
%2767 = zext i32 %2737 to i64
%2768 = shl nuw i64 %2767, 32
%2769 = or i64 %2768, %2762
%2770 = ashr i64 %2769, %2744
%2771 = trunc i64 %2770 to i32
%2772 = shl nsw i32 %2678, 3
%2773 = or i32 %2772, 2
%2774 = icmp sgt i32 %2773, 1018
%2775 = select i1 %2774, double 0x3770000000000000, double 1.000000e+00
%2776 = fmul double %1376, %2775
%2777 = select i1 %2774, i32 136, i32 0
%2778 = sub i32 %2777, %2773
%2779 = shl i32 %2778, 20
%2780 = add i32 %2779, 1127219200
%2781 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2780, i32 1
%2782 = bitcast <2 x i32> %2781 to double
%2783 = insertelement <2 x i32> undef, i32 %2746, i32 0
%2784 = and i32 %2751, 65535
%2785 = or i32 %2784, %2780
%2786 = insertelement <2 x i32> %2783, i32 %2785, i32 1
%2787 = bitcast <2 x i32> %2786 to double
%2788 = fsub double %2787, %2782
%2789 = add i32 %2779, 1177550848
%2790 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2789, i32 1
%2791 = bitcast <2 x i32> %2790 to double
%2792 = shl i32 %2756, 16
%2793 = lshr i32 %2751, 16
%2794 = or i32 %2792, %2793
%2795 = insertelement <2 x i32> undef, i32 %2794, i32 0
%2796 = lshr i32 %2756, 16
%2797 = or i32 %2796, %2789
%2798 = insertelement <2 x i32> %2795, i32 %2797, i32 1
%2799 = bitcast <2 x i32> %2798 to double
%2800 = fsub double %2799, %2791
%2801 = add i32 %2779, 1227882496
%2802 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2801, i32 1
%2803 = bitcast <2 x i32> %2802 to double
%2804 = insertelement <2 x i32> undef, i32 %2761, i32 0
%2805 = and i32 %2766, 65535
%2806 = or i32 %2805, %2801
%2807 = insertelement <2 x i32> %2804, i32 %2806, i32 1
%2808 = bitcast <2 x i32> %2807 to double
%2809 = fsub double %2808, %2803
%2810 = add i32 %2779, 1278214144
%2811 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %2810, i32 1
%2812 = bitcast <2 x i32> %2811 to double
%2813 = shl i32 %2771, 16
%2814 = lshr i32 %2766, 16
%2815 = or i32 %2813, %2814
%2816 = insertelement <2 x i32> undef, i32 %2815, i32 0
%2817 = lshr i32 %2771, 16
%2818 = or i32 %2817, %2810
%2819 = insertelement <2 x i32> %2816, i32 %2818, i32 1
%2820 = bitcast <2 x i32> %2819 to double
%2821 = fsub double %2820, %2812
%2822 = fmul double %2776, %2788
%2823 = fsub double -0.000000e+00, %2822
%2824 = tail call double @llvm.fma.f64(double %2788, double %2776, double %2823) #6
%2825 = fmul double %2776, %2800
%2826 = fsub double -0.000000e+00, %2825
%2827 = tail call double @llvm.fma.f64(double %2800, double %2776, double %2826) #6
%2828 = fmul double %2776, %2809
%2829 = fsub double -0.000000e+00, %2828
%2830 = tail call double @llvm.fma.f64(double %2809, double %2776, double %2829) #6
%2831 = fmul double %2776, %2821
%2832 = fsub double -0.000000e+00, %2831
%2833 = tail call double @llvm.fma.f64(double %2821, double %2776, double %2832) #6
%2834 = fadd double %2828, %2831
%2835 = fsub double %2834, %2831
%2836 = fsub double %2828, %2835
%2837 = fadd double %2833, %2836
%2838 = fsub double %2837, %2833
%2839 = fsub double %2836, %2838
%2840 = fadd double %2825, %2837
%2841 = fsub double %2840, %2837
%2842 = fsub double %2825, %2841
%2843 = fadd double %2839, %2842
%2844 = fadd double %2830, %2843
%2845 = fsub double %2844, %2830
%2846 = fsub double %2843, %2845
%2847 = fadd double %2822, %2844
%2848 = fsub double %2847, %2844
%2849 = fsub double %2822, %2848
%2850 = fadd double %2846, %2849
%2851 = fadd double %2827, %2850
%2852 = fadd double %2824, %2851
%2853 = fmul double %2834, 9.765625e-04
%2854 = tail call double @llvm.floor.f64(double %2853) #6
%2855 = fsub double %2853, %2854
%2856 = tail call double @fmin(double %2855, double 0x3FEFFFFFFFFFFFFF) #7
%2857 = tail call double @llvm.fabs.f64(double %2853) #3
%2858 = fcmp oeq double %2857, 0x7FF0000000000000
%2859 = select i1 %2858, double 0.000000e+00, double %2856
%2860 = fcmp uno double %2853, 0.000000e+00
%2861 = select i1 %2860, double %2853, double %2859
%2862 = fmul double %2861, 1.024000e+03
%2863 = fadd double %2840, %2862
%2864 = fcmp olt double %2863, 0.000000e+00
%2865 = select i1 %2864, double 1.024000e+03, double 0.000000e+00
%2866 = fadd double %2862, %2865
%2867 = fadd double %2840, %2866
%2868 = tail call double @llvm.floor.f64(double %2867) #6
%2869 = fsub double %2867, %2868
%2870 = tail call double @fmin(double %2869, double 0x3FEFFFFFFFFFFFFF) #7
%2871 = tail call double @llvm.fabs.f64(double %2867) #3
%2872 = fcmp oeq double %2871, 0x7FF0000000000000
%2873 = select i1 %2872, double 0.000000e+00, double %2870
%2874 = fcmp uno double %2867, 0.000000e+00
%2875 = select i1 %2874, double %2867, double %2873
%2876 = fsub double %2867, %2875
%2877 = fptrunc double %2876 to float
%2878 = fptosi float %2877 to i32
%2879 = fsub double %2866, %2876
%2880 = fadd double %2840, %2879
%2881 = fsub double %2880, %2879
%2882 = fsub double %2840, %2881
%2883 = fadd double %2847, %2882
%2884 = fsub double %2883, %2882
%2885 = fsub double %2847, %2884
%2886 = fadd double %2852, %2885
%2887 = fcmp oge double %2880, 5.000000e-01
%2888 = zext i1 %2887 to i32
%2889 = add nsw i32 %2888, %2878
%2890 = uitofp i1 %2887 to float
%2891 = fpext float %2890 to double
%2892 = fsub double %2880, %2891
%2893 = fadd double %2883, %2892
%2894 = fsub double %2893, %2892
%2895 = fsub double %2883, %2894
%2896 = fadd double %2886, %2895
%2897 = fmul double %2893, 0x3FF921FB54442D18
%2898 = fsub double -0.000000e+00, %2897
%2899 = tail call double @llvm.fma.f64(double %2893, double 0x3FF921FB54442D18, double %2898) #6
%2900 = tail call double @llvm.fma.f64(double %2893, double 0x3C91A62633145C06, double %2899) #6
%2901 = tail call double @llvm.fma.f64(double %2896, double 0x3FF921FB54442D18, double %2900) #6
%2902 = fadd double %2897, %2901
%2903 = fsub double %2902, %2897
%2904 = fsub double %2901, %2903
br label %2905
; <label>:2905: ; preds = %2670, %2639
%2906 = phi i32 [ %2669, %2639 ], [ %2889, %2670 ]
%2907 = phi double [ %2664, %2639 ], [ %2902, %2670 ]
%2908 = phi double [ %2667, %2639 ], [ %2904, %2670 ]
%2909 = and i32 %2906, 2
%2910 = fmul double %2907, %2907
%2911 = fmul double %2907, %2910
%2912 = fmul double %2910, 5.000000e-01
%2913 = fsub double 1.000000e+00, %2912
%2914 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %2910, double 0xBE5AE600B42FDFA7) #6
%2915 = tail call double @llvm.fma.f64(double %2914, double %2910, double 0x3EC71DE3796CDE01) #6
%2916 = tail call double @llvm.fma.f64(double %2915, double %2910, double 0xBF2A01A019E83E5C) #6
%2917 = tail call double @llvm.fma.f64(double %2916, double %2910, double 0x3F81111111110BB3) #6
%2918 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %2910, double 0x3E21EEB69037AB78) #6
%2919 = tail call double @llvm.fma.f64(double %2918, double %2910, double 0xBE927E4FA17F65F6) #6
%2920 = tail call double @llvm.fma.f64(double %2919, double %2910, double 0x3EFA01A019F4EC90) #6
%2921 = tail call double @llvm.fma.f64(double %2920, double %2910, double 0xBF56C16C16C16967) #6
%2922 = tail call double @llvm.fma.f64(double %2921, double %2910, double 0x3FA5555555555555) #6
%2923 = fmul double %2910, %2910
%2924 = fsub double 1.000000e+00, %2913
%2925 = fsub double %2924, %2912
%2926 = tail call double @llvm.fma.f64(double %2907, double %2908, double %2925) #6
%2927 = tail call double @llvm.fma.f64(double %2922, double %2923, double %2926) #6
%2928 = fadd double %2913, %2927
%2929 = fsub double -0.000000e+00, %2911
%2930 = fmul double %2908, 5.000000e-01
%2931 = tail call double @llvm.fma.f64(double %2929, double %2917, double %2930) #6
%2932 = fsub double -0.000000e+00, %2908
%2933 = tail call double @llvm.fma.f64(double %2931, double %2910, double %2932) #6
%2934 = tail call double @llvm.fma.f64(double %2929, double 0xBFC5555555555555, double %2933) #6
%2935 = fsub double %2907, %2934
%2936 = and i32 %2906, 1
%2937 = icmp ne i32 %2936, 0
%2938 = select i1 %2937, double %2928, double %2935
%2939 = bitcast double %2938 to <2 x i32>
%2940 = icmp ugt i32 %2909, 1
%2941 = fcmp olt double %1375, 0.000000e+00
%2942 = xor i1 %2941, %2940
%2943 = zext i1 %2942 to i32
%2944 = shl nuw i32 %2943, 31
%2945 = extractelement <2 x i32> %2939, i32 1
%2946 = xor i32 %2945, %2944
%2947 = insertelement <2 x i32> %2939, i32 %2946, i32 1
%2948 = fcmp uno double %1375, 0.000000e+00
%2949 = or i1 %2948, %1687
%2950 = bitcast <2 x i32> %2947 to double
%2951 = select i1 %2949, double 0x7FF8000000000000, double %2950
%2952 = insertelement <4 x double> undef, double %2951, i32 0
br i1 %1694, label %2953, label %2984
; <label>:2953: ; preds = %2905
%2954 = tail call double @llvm.fma.f64(double %1693, double 0x3FE45F306DC9C883, double 5.000000e-01) #6
%2955 = tail call double @llvm.trunc.f64(double %2954) #6
%2956 = fmul double %2955, 0xBFF921FB54442D18
%2957 = fsub double -0.000000e+00, %2956
%2958 = tail call double @llvm.fma.f64(double 0xBFF921FB54442D18, double %2955, double %2957) #6
%2959 = fmul double %2955, 0xBC91A62633145C06
%2960 = fsub double -0.000000e+00, %2959
%2961 = tail call double @llvm.fma.f64(double 0xBC91A62633145C06, double %2955, double %2960) #6
%2962 = fmul double %2955, 0xB94C1CD129024E08
%2963 = fsub double -0.000000e+00, %2962
%2964 = tail call double @llvm.fma.f64(double 0xB94C1CD129024E08, double %2955, double %2963) #6
%2965 = fadd double %2959, %2958
%2966 = fsub double %2965, %2958
%2967 = fsub double %2959, %2966
%2968 = fadd double %2962, %2967
%2969 = fadd double %2961, %2968
%2970 = fadd double %2964, %2969
%2971 = fadd double %2956, %2965
%2972 = fsub double %2971, %2956
%2973 = fsub double %2965, %2972
%2974 = fadd double %2973, %2970
%2975 = fsub double %2974, %2973
%2976 = fsub double %2970, %2975
%2977 = fadd double %1693, %2971
%2978 = fadd double %2977, %2974
%2979 = fsub double %2978, %2977
%2980 = fsub double %2974, %2979
%2981 = fadd double %2976, %2980
%2982 = fptosi double %2955 to i64
%2983 = trunc i64 %2982 to i32
br label %3219
; <label>:2984: ; preds = %2905
%2985 = bitcast double %1693 to i64
%2986 = lshr i64 %2985, 52
%2987 = trunc i64 %2986 to i32
%2988 = add nsw i32 %2987, -1023
%2989 = ashr i32 %2988, 3
%2990 = add nsw i32 %2989, 17
%2991 = icmp slt i32 %2990, 23
%2992 = select i1 %2991, i32 23, i32 %2990
%2993 = sub nsw i32 150, %2992
%2994 = and i32 %2993, -16
%2995 = sext i32 %2994 to i64
%2996 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %2995
%2997 = bitcast i8 addrspace(2)* %2996 to <4 x i32> addrspace(2)*
%2998 = load <4 x i32>, <4 x i32> addrspace(2)* %2997, align 16, !tbaa !7
%2999 = add nsw i32 %2994, 16
%3000 = sext i32 %2999 to i64
%3001 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %3000
%3002 = bitcast i8 addrspace(2)* %3001 to <4 x i32> addrspace(2)*
%3003 = load <4 x i32>, <4 x i32> addrspace(2)* %3002, align 16, !tbaa !7
%3004 = add nsw i32 %2994, 32
%3005 = sext i32 %3004 to i64
%3006 = getelementptr inbounds [158 x i8], [158 x i8] addrspace(2)* @PIBITS_TBL, i64 0, i64 %3005
%3007 = bitcast i8 addrspace(2)* %3006 to <4 x i32> addrspace(2)*
%3008 = load <4 x i32>, <4 x i32> addrspace(2)* %3007, align 16, !tbaa !7
%3009 = lshr i32 %2993, 2
%3010 = and i32 %3009, 3
%3011 = insertelement <4 x i32> undef, i32 %3010, i32 0
%3012 = shufflevector <4 x i32> %3011, <4 x i32> undef, <4 x i32> zeroinitializer
%3013 = icmp eq <4 x i32> %3012, <i32 0, i32 1, i32 2, i32 3>
%3014 = sext <4 x i1> %3013 to <4 x i32>
%3015 = extractelement <4 x i32> %3014, i32 1
%3016 = icmp ne i32 %3015, 0
%3017 = extractelement <4 x i32> %2998, i32 1
%3018 = extractelement <4 x i32> %2998, i32 0
%3019 = select i1 %3016, i32 %3017, i32 %3018
%3020 = extractelement <4 x i32> %3014, i32 2
%3021 = icmp ne i32 %3020, 0
%3022 = extractelement <4 x i32> %2998, i32 2
%3023 = select i1 %3021, i32 %3022, i32 %3019
%3024 = extractelement <4 x i32> %3014, i32 3
%3025 = icmp ne i32 %3024, 0
%3026 = extractelement <4 x i32> %2998, i32 3
%3027 = select i1 %3025, i32 %3026, i32 %3023
%3028 = select i1 %3016, i32 %3022, i32 %3017
%3029 = select i1 %3021, i32 %3026, i32 %3028
%3030 = extractelement <4 x i32> %3003, i32 0
%3031 = select i1 %3025, i32 %3030, i32 %3029
%3032 = select i1 %3016, i32 %3026, i32 %3022
%3033 = select i1 %3021, i32 %3030, i32 %3032
%3034 = extractelement <4 x i32> %3003, i32 1
%3035 = select i1 %3025, i32 %3034, i32 %3033
%3036 = select i1 %3016, i32 %3030, i32 %3026
%3037 = select i1 %3021, i32 %3034, i32 %3036
%3038 = extractelement <4 x i32> %3003, i32 2
%3039 = select i1 %3025, i32 %3038, i32 %3037
%3040 = select i1 %3016, i32 %3034, i32 %3030
%3041 = select i1 %3021, i32 %3038, i32 %3040
%3042 = extractelement <4 x i32> %3003, i32 3
%3043 = select i1 %3025, i32 %3042, i32 %3041
%3044 = select i1 %3016, i32 %3038, i32 %3034
%3045 = select i1 %3021, i32 %3042, i32 %3044
%3046 = extractelement <4 x i32> %3008, i32 0
%3047 = select i1 %3025, i32 %3046, i32 %3045
%3048 = select i1 %3016, i32 %3042, i32 %3038
%3049 = select i1 %3021, i32 %3046, i32 %3048
%3050 = extractelement <4 x i32> %3008, i32 1
%3051 = select i1 %3025, i32 %3050, i32 %3049
%3052 = zext i32 %3031 to i64
%3053 = shl nuw i64 %3052, 32
%3054 = zext i32 %3027 to i64
%3055 = or i64 %3053, %3054
%3056 = shl i32 %2993, 3
%3057 = zext i32 %3056 to i64
%3058 = and i64 %3057, 24
%3059 = ashr i64 %3055, %3058
%3060 = trunc i64 %3059 to i32
%3061 = zext i32 %3035 to i64
%3062 = shl nuw i64 %3061, 32
%3063 = or i64 %3062, %3052
%3064 = ashr i64 %3063, %3058
%3065 = trunc i64 %3064 to i32
%3066 = zext i32 %3039 to i64
%3067 = shl nuw i64 %3066, 32
%3068 = or i64 %3067, %3061
%3069 = ashr i64 %3068, %3058
%3070 = trunc i64 %3069 to i32
%3071 = zext i32 %3043 to i64
%3072 = shl nuw i64 %3071, 32
%3073 = or i64 %3072, %3066
%3074 = ashr i64 %3073, %3058
%3075 = trunc i64 %3074 to i32
%3076 = zext i32 %3047 to i64
%3077 = shl nuw i64 %3076, 32
%3078 = or i64 %3077, %3071
%3079 = ashr i64 %3078, %3058
%3080 = trunc i64 %3079 to i32
%3081 = zext i32 %3051 to i64
%3082 = shl nuw i64 %3081, 32
%3083 = or i64 %3082, %3076
%3084 = ashr i64 %3083, %3058
%3085 = trunc i64 %3084 to i32
%3086 = shl nsw i32 %2992, 3
%3087 = or i32 %3086, 2
%3088 = icmp sgt i32 %3087, 1018
%3089 = select i1 %3088, double 0x3770000000000000, double 1.000000e+00
%3090 = fmul double %1693, %3089
%3091 = select i1 %3088, i32 136, i32 0
%3092 = sub i32 %3091, %3087
%3093 = shl i32 %3092, 20
%3094 = add i32 %3093, 1127219200
%3095 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %3094, i32 1
%3096 = bitcast <2 x i32> %3095 to double
%3097 = insertelement <2 x i32> undef, i32 %3060, i32 0
%3098 = and i32 %3065, 65535
%3099 = or i32 %3098, %3094
%3100 = insertelement <2 x i32> %3097, i32 %3099, i32 1
%3101 = bitcast <2 x i32> %3100 to double
%3102 = fsub double %3101, %3096
%3103 = add i32 %3093, 1177550848
%3104 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %3103, i32 1
%3105 = bitcast <2 x i32> %3104 to double
%3106 = shl i32 %3070, 16
%3107 = lshr i32 %3065, 16
%3108 = or i32 %3106, %3107
%3109 = insertelement <2 x i32> undef, i32 %3108, i32 0
%3110 = lshr i32 %3070, 16
%3111 = or i32 %3110, %3103
%3112 = insertelement <2 x i32> %3109, i32 %3111, i32 1
%3113 = bitcast <2 x i32> %3112 to double
%3114 = fsub double %3113, %3105
%3115 = add i32 %3093, 1227882496
%3116 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %3115, i32 1
%3117 = bitcast <2 x i32> %3116 to double
%3118 = insertelement <2 x i32> undef, i32 %3075, i32 0
%3119 = and i32 %3080, 65535
%3120 = or i32 %3119, %3115
%3121 = insertelement <2 x i32> %3118, i32 %3120, i32 1
%3122 = bitcast <2 x i32> %3121 to double
%3123 = fsub double %3122, %3117
%3124 = add i32 %3093, 1278214144
%3125 = insertelement <2 x i32> <i32 0, i32 undef>, i32 %3124, i32 1
%3126 = bitcast <2 x i32> %3125 to double
%3127 = shl i32 %3085, 16
%3128 = lshr i32 %3080, 16
%3129 = or i32 %3127, %3128
%3130 = insertelement <2 x i32> undef, i32 %3129, i32 0
%3131 = lshr i32 %3085, 16
%3132 = or i32 %3131, %3124
%3133 = insertelement <2 x i32> %3130, i32 %3132, i32 1
%3134 = bitcast <2 x i32> %3133 to double
%3135 = fsub double %3134, %3126
%3136 = fmul double %3090, %3102
%3137 = fsub double -0.000000e+00, %3136
%3138 = tail call double @llvm.fma.f64(double %3102, double %3090, double %3137) #6
%3139 = fmul double %3090, %3114
%3140 = fsub double -0.000000e+00, %3139
%3141 = tail call double @llvm.fma.f64(double %3114, double %3090, double %3140) #6
%3142 = fmul double %3090, %3123
%3143 = fsub double -0.000000e+00, %3142
%3144 = tail call double @llvm.fma.f64(double %3123, double %3090, double %3143) #6
%3145 = fmul double %3090, %3135
%3146 = fsub double -0.000000e+00, %3145
%3147 = tail call double @llvm.fma.f64(double %3135, double %3090, double %3146) #6
%3148 = fadd double %3142, %3145
%3149 = fsub double %3148, %3145
%3150 = fsub double %3142, %3149
%3151 = fadd double %3147, %3150
%3152 = fsub double %3151, %3147
%3153 = fsub double %3150, %3152
%3154 = fadd double %3139, %3151
%3155 = fsub double %3154, %3151
%3156 = fsub double %3139, %3155
%3157 = fadd double %3153, %3156
%3158 = fadd double %3144, %3157
%3159 = fsub double %3158, %3144
%3160 = fsub double %3157, %3159
%3161 = fadd double %3136, %3158
%3162 = fsub double %3161, %3158
%3163 = fsub double %3136, %3162
%3164 = fadd double %3160, %3163
%3165 = fadd double %3141, %3164
%3166 = fadd double %3138, %3165
%3167 = fmul double %3148, 9.765625e-04
%3168 = tail call double @llvm.floor.f64(double %3167) #6
%3169 = fsub double %3167, %3168
%3170 = tail call double @fmin(double %3169, double 0x3FEFFFFFFFFFFFFF) #7
%3171 = tail call double @llvm.fabs.f64(double %3167) #3
%3172 = fcmp oeq double %3171, 0x7FF0000000000000
%3173 = select i1 %3172, double 0.000000e+00, double %3170
%3174 = fcmp uno double %3167, 0.000000e+00
%3175 = select i1 %3174, double %3167, double %3173
%3176 = fmul double %3175, 1.024000e+03
%3177 = fadd double %3154, %3176
%3178 = fcmp olt double %3177, 0.000000e+00
%3179 = select i1 %3178, double 1.024000e+03, double 0.000000e+00
%3180 = fadd double %3176, %3179
%3181 = fadd double %3154, %3180
%3182 = tail call double @llvm.floor.f64(double %3181) #6
%3183 = fsub double %3181, %3182
%3184 = tail call double @fmin(double %3183, double 0x3FEFFFFFFFFFFFFF) #7
%3185 = tail call double @llvm.fabs.f64(double %3181) #3
%3186 = fcmp oeq double %3185, 0x7FF0000000000000
%3187 = select i1 %3186, double 0.000000e+00, double %3184
%3188 = fcmp uno double %3181, 0.000000e+00
%3189 = select i1 %3188, double %3181, double %3187
%3190 = fsub double %3181, %3189
%3191 = fptrunc double %3190 to float
%3192 = fptosi float %3191 to i32
%3193 = fsub double %3180, %3190
%3194 = fadd double %3154, %3193
%3195 = fsub double %3194, %3193
%3196 = fsub double %3154, %3195
%3197 = fadd double %3161, %3196
%3198 = fsub double %3197, %3196
%3199 = fsub double %3161, %3198
%3200 = fadd double %3166, %3199
%3201 = fcmp oge double %3194, 5.000000e-01
%3202 = zext i1 %3201 to i32
%3203 = add nsw i32 %3202, %3192
%3204 = uitofp i1 %3201 to float
%3205 = fpext float %3204 to double
%3206 = fsub double %3194, %3205
%3207 = fadd double %3197, %3206
%3208 = fsub double %3207, %3206
%3209 = fsub double %3197, %3208
%3210 = fadd double %3200, %3209
%3211 = fmul double %3207, 0x3FF921FB54442D18
%3212 = fsub double -0.000000e+00, %3211
%3213 = tail call double @llvm.fma.f64(double %3207, double 0x3FF921FB54442D18, double %3212) #6
%3214 = tail call double @llvm.fma.f64(double %3207, double 0x3C91A62633145C06, double %3213) #6
%3215 = tail call double @llvm.fma.f64(double %3210, double 0x3FF921FB54442D18, double %3214) #6
%3216 = fadd double %3211, %3215
%3217 = fsub double %3216, %3211
%3218 = fsub double %3215, %3217
br label %3219
; <label>:3219: ; preds = %2953, %2984
%3220 = phi i32 [ %2983, %2953 ], [ %3203, %2984 ]
%3221 = phi double [ %2978, %2953 ], [ %3216, %2984 ]
%3222 = phi double [ %2981, %2953 ], [ %3218, %2984 ]
%3223 = and i32 %3220, 2
%3224 = fmul double %3221, %3221
%3225 = fmul double %3221, %3224
%3226 = fmul double %3224, 5.000000e-01
%3227 = fsub double 1.000000e+00, %3226
%3228 = tail call double @llvm.fma.f64(double 0x3DE5E0B2F9A43BB8, double %3224, double 0xBE5AE600B42FDFA7) #6
%3229 = tail call double @llvm.fma.f64(double %3228, double %3224, double 0x3EC71DE3796CDE01) #6
%3230 = tail call double @llvm.fma.f64(double %3229, double %3224, double 0xBF2A01A019E83E5C) #6
%3231 = tail call double @llvm.fma.f64(double %3230, double %3224, double 0x3F81111111110BB3) #6
%3232 = tail call double @llvm.fma.f64(double 0xBDA907DB46CC5E42, double %3224, double 0x3E21EEB69037AB78) #6
%3233 = tail call double @llvm.fma.f64(double %3232, double %3224, double 0xBE927E4FA17F65F6) #6
%3234 = tail call double @llvm.fma.f64(double %3233, double %3224, double 0x3EFA01A019F4EC90) #6
%3235 = tail call double @llvm.fma.f64(double %3234, double %3224, double 0xBF56C16C16C16967) #6
%3236 = tail call double @llvm.fma.f64(double %3235, double %3224, double 0x3FA5555555555555) #6
%3237 = fmul double %3224, %3224
%3238 = fsub double 1.000000e+00, %3227
%3239 = fsub double %3238, %3226
%3240 = tail call double @llvm.fma.f64(double %3221, double %3222, double %3239) #6
%3241 = tail call double @llvm.fma.f64(double %3236, double %3237, double %3240) #6
%3242 = fadd double %3227, %3241
%3243 = fsub double -0.000000e+00, %3225
%3244 = fmul double %3222, 5.000000e-01
%3245 = tail call double @llvm.fma.f64(double %3243, double %3231, double %3244) #6
%3246 = fsub double -0.000000e+00, %3222
%3247 = tail call double @llvm.fma.f64(double %3245, double %3224, double %3246) #6
%3248 = tail call double @llvm.fma.f64(double %3243, double 0xBFC5555555555555, double %3247) #6
%3249 = fsub double %3221, %3248
%3250 = and i32 %3220, 1
%3251 = icmp ne i32 %3250, 0
%3252 = select i1 %3251, double %3242, double %3249
%3253 = bitcast double %3252 to <2 x i32>
%3254 = icmp ugt i32 %3223, 1
%3255 = fcmp olt double %1692, 0.000000e+00
%3256 = xor i1 %3255, %3254
%3257 = zext i1 %3256 to i32
%3258 = shl nuw i32 %3257, 31
%3259 = extractelement <2 x i32> %3253, i32 1
%3260 = xor i32 %3259, %3258
%3261 = insertelement <2 x i32> %3253, i32 %3260, i32 1
%3262 = fcmp uno double %1692, 0.000000e+00
%3263 = or i1 %3262, %2004
%3264 = bitcast <2 x i32> %3261 to double
%3265 = select i1 %3263, double 0x7FF8000000000000, double %3264
%3266 = insertelement <4 x double> %2952, double %3265, i32 1
%3267 = shufflevector <4 x double> %2638, <4 x double> %3266, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%3268 = fmul <4 x double> %739, %3267
store <4 x double> %3268, <4 x double> addrspace(4)* %2, align 32, !tbaa !7
%3269 = load <4 x i32>, <4 x i32>* %31, align 16, !tbaa !7
store <4 x i32> %3269, <4 x i32> addrspace(4)* %3, align 16, !tbaa !7
call void @llvm.lifetime.end(i64 16, i8* %10) #5
call void @llvm.lifetime.end(i64 16, i8* %9) #5
call void @llvm.lifetime.end(i64 128, i8* nonnull %8) #5
ret void
}
; Function Attrs: norecurse nounwind
define void @calOutputs(<4 x double>, <4 x double>, <4 x double>, <4 x double>, <4 x double>, <4 x double> addrspace(4)* nocapture, <4 x double> addrspace(4)* nocapture, <4 x double> addrspace(4)* nocapture, <4 x double> addrspace(4)* nocapture) #0 {
%10 = fsub <4 x double> %3, %0
%11 = fsub <4 x double> %4, %0
%12 = extractelement <4 x double> %10, i32 0
%13 = fcmp ogt double %12, 0.000000e+00
%14 = shufflevector <4 x double> <double 0.000000e+00, double undef, double undef, double undef>, <4 x double> %10, <4 x i32> <i32 4, i32 0, i32 0, i32 0>
%15 = select i1 %13, <4 x double> %14, <4 x double> zeroinitializer
%16 = select i1 %13, <4 x double> <double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00>, <4 x double> zeroinitializer
%17 = extractelement <4 x double> %10, i32 1
%18 = fcmp ogt double %17, 0.000000e+00
%19 = insertelement <4 x double> %16, double 1.000000e+00, i32 1
%20 = shufflevector <4 x double> %15, <4 x double> %10, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
%21 = select i1 %18, <4 x double> %20, <4 x double> %15
%22 = select i1 %18, <4 x double> %19, <4 x double> %16
%23 = extractelement <4 x double> %10, i32 2
%24 = fcmp ogt double %23, 0.000000e+00
%25 = insertelement <4 x double> %22, double 1.000000e+00, i32 2
%26 = shufflevector <4 x double> %21, <4 x double> %10, <4 x i32> <i32 0, i32 1, i32 6, i32 3>
%27 = select i1 %24, <4 x double> %26, <4 x double> %21
%28 = select i1 %24, <4 x double> %25, <4 x double> %22
%29 = extractelement <4 x double> %10, i32 3
%30 = fcmp ogt double %29, 0.000000e+00
%31 = insertelement <4 x double> %28, double 1.000000e+00, i32 3
%32 = shufflevector <4 x double> %27, <4 x double> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
%33 = select i1 %30, <4 x double> %32, <4 x double> %27
%34 = select i1 %30, <4 x double> %31, <4 x double> %28
%35 = extractelement <4 x double> %11, i32 0
%36 = fcmp ogt double %35, 0.000000e+00
%37 = shufflevector <4 x double> <double 0.000000e+00, double undef, double undef, double undef>, <4 x double> %11, <4 x i32> <i32 4, i32 0, i32 0, i32 0>
%38 = select i1 %36, <4 x double> %37, <4 x double> zeroinitializer
%39 = select i1 %36, <4 x double> <double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00>, <4 x double> zeroinitializer
%40 = extractelement <4 x double> %11, i32 1
%41 = fcmp ogt double %40, 0.000000e+00
%42 = insertelement <4 x double> %39, double 1.000000e+00, i32 1
%43 = shufflevector <4 x double> %38, <4 x double> %11, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
%44 = select i1 %41, <4 x double> %43, <4 x double> %38
%45 = select i1 %41, <4 x double> %42, <4 x double> %39
%46 = extractelement <4 x double> %11, i32 2
%47 = fcmp ogt double %46, 0.000000e+00
%48 = insertelement <4 x double> %45, double 1.000000e+00, i32 2
%49 = shufflevector <4 x double> %44, <4 x double> %11, <4 x i32> <i32 0, i32 1, i32 6, i32 3>
%50 = select i1 %47, <4 x double> %49, <4 x double> %44
%51 = select i1 %47, <4 x double> %48, <4 x double> %45
%52 = extractelement <4 x double> %11, i32 3
%53 = fcmp ogt double %52, 0.000000e+00
%54 = insertelement <4 x double> %51, double 1.000000e+00, i32 3
%55 = shufflevector <4 x double> %50, <4 x double> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
%56 = select i1 %53, <4 x double> %55, <4 x double> %50
%57 = select i1 %53, <4 x double> %54, <4 x double> %51
%58 = fmul <4 x double> %34, %1
store <4 x double> %58, <4 x double> addrspace(4)* %5, align 32, !tbaa !7
%59 = fmul <4 x double> %57, %2
store <4 x double> %59, <4 x double> addrspace(4)* %6, align 32, !tbaa !7
store <4 x double> %33, <4 x double> addrspace(4)* %7, align 32, !tbaa !7
store <4 x double> %56, <4 x double> addrspace(4)* %8, align 32, !tbaa !7
ret void
}
; Function Attrs: nounwind
define void @calPriceVega(%struct._MonteCalroAttrib* byval nocapture readonly align 32, i32, i32, <4 x i32> addrspace(1)* nocapture readonly, <4 x double> addrspace(1)* nocapture, <4 x double> addrspace(1)* nocapture) #2 {
%7 = alloca <4 x double>, align 32
%8 = alloca <4 x double>, align 32
%9 = alloca <4 x i32>, align 16
%10 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 0
%11 = load <4 x double>, <4 x double>* %10, align 32, !tbaa !10
%12 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 1
%13 = load <4 x double>, <4 x double>* %12, align 32, !tbaa !12
%14 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 2
%15 = load <4 x double>, <4 x double>* %14, align 32, !tbaa !13
%16 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 3
%17 = load <4 x double>, <4 x double>* %16, align 32, !tbaa !14
%18 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 4
%19 = load <4 x double>, <4 x double>* %18, align 32, !tbaa !15
%20 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 5
%21 = load <4 x double>, <4 x double>* %20, align 32, !tbaa !16
%22 = getelementptr inbounds %struct._MonteCalroAttrib, %struct._MonteCalroAttrib* %0, i32 0, i32 6
%23 = load <4 x double>, <4 x double>* %22, align 32, !tbaa !17
%24 = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%25 = tail call noalias nonnull dereferenceable(64) i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #5
%26 = getelementptr inbounds i8, i8 addrspace(2)* %25, i64 4
%27 = bitcast i8 addrspace(2)* %26 to i32 addrspace(2)*
%28 = load i32, i32 addrspace(2)* %27, align 4, !invariant.load !18
%29 = and i32 %28, 65535
%30 = mul i32 %29, %24
%31 = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !19
%32 = add i32 %30, %31
%33 = tail call i32 @llvm.amdgcn.workgroup.id.y() #5
%34 = lshr i32 %28, 16
%35 = mul i32 %33, %34
%36 = tail call i32 @llvm.amdgcn.workitem.id.y() #5, !range !19
%37 = add i32 %36, %35
%38 = bitcast <4 x double>* %7 to i8*
call void @llvm.lifetime.start(i64 32, i8* %38) #5
store <4 x double> zeroinitializer, <4 x double>* %7, align 32, !tbaa !7
%39 = bitcast <4 x double>* %8 to i8*
call void @llvm.lifetime.start(i64 32, i8* %39) #5
store <4 x double> zeroinitializer, <4 x double>* %8, align 32, !tbaa !7
%40 = bitcast <4 x i32>* %9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %40) #5
%41 = mul i32 %37, %2
%42 = add i32 %32, %41
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds <4 x i32>, <4 x i32> addrspace(1)* %3, i64 %43
%45 = load <4 x i32>, <4 x i32> addrspace(1)* %44, align 16, !tbaa !7
store <4 x i32> %45, <4 x i32>* %9, align 16, !tbaa !7
%46 = icmp sgt i32 %1, 1
br i1 %46, label %47, label %57
; <label>:47: ; preds = %6
%48 = addrspacecast <4 x double>* %7 to <4 x double> addrspace(4)*
%49 = addrspacecast <4 x double>* %8 to <4 x double> addrspace(4)*
%50 = addrspacecast <4 x i32>* %9 to <4 x i32> addrspace(4)*
%51 = fmul <4 x double> %17, %23
br label %127
; <label>:52: ; preds = %519
%53 = phi <4 x double> [ %1215, %519 ]
%54 = phi <4 x double> [ %882, %519 ]
%55 = phi <4 x double> [ %545, %519 ]
%56 = phi <4 x double> [ %544, %519 ]
br label %57
; <label>:57: ; preds = %52, %6
%58 = phi <4 x double> [ zeroinitializer, %6 ], [ %53, %52 ]
%59 = phi <4 x double> [ zeroinitializer, %6 ], [ %54, %52 ]
%60 = phi <4 x double> [ %19, %6 ], [ %55, %52 ]
%61 = phi <4 x double> [ %19, %6 ], [ %56, %52 ]
%62 = sitofp i32 %1 to double
%63 = insertelement <4 x double> undef, double %62, i32 0
%64 = shufflevector <4 x double> %63, <4 x double> undef, <4 x i32> zeroinitializer
%65 = fdiv <4 x double> %61, %64
%66 = fdiv <4 x double> %60, %64
%67 = fdiv <4 x double> %59, %64
%68 = fdiv <4 x double> %58, %64
%69 = fsub <4 x double> %65, %11
%70 = fsub <4 x double> %66, %11
%71 = extractelement <4 x double> %69, i32 0
%72 = fcmp ogt double %71, 0.000000e+00
%73 = shufflevector <4 x double> <double 0.000000e+00, double undef, double undef, double undef>, <4 x double> %69, <4 x i32> <i32 4, i32 0, i32 0, i32 0>
%74 = select i1 %72, <4 x double> %73, <4 x double> zeroinitializer
%75 = select i1 %72, <4 x double> <double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00>, <4 x double> zeroinitializer
%76 = extractelement <4 x double> %69, i32 1
%77 = fcmp ogt double %76, 0.000000e+00
%78 = insertelement <4 x double> %75, double 1.000000e+00, i32 1
%79 = shufflevector <4 x double> %74, <4 x double> %69, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
%80 = select i1 %77, <4 x double> %79, <4 x double> %74
%81 = select i1 %77, <4 x double> %78, <4 x double> %75
%82 = extractelement <4 x double> %69, i32 2
%83 = fcmp ogt double %82, 0.000000e+00
%84 = insertelement <4 x double> %81, double 1.000000e+00, i32 2
%85 = shufflevector <4 x double> %80, <4 x double> %69, <4 x i32> <i32 0, i32 1, i32 6, i32 3>
%86 = select i1 %83, <4 x double> %85, <4 x double> %80
%87 = select i1 %83, <4 x double> %84, <4 x double> %81
%88 = extractelement <4 x double> %69, i32 3
%89 = fcmp ogt double %88, 0.000000e+00
%90 = insertelement <4 x double> %87, double 1.000000e+00, i32 3
%91 = shufflevector <4 x double> %86, <4 x double> %69, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
%92 = select i1 %89, <4 x double> %91, <4 x double> %86
%93 = select i1 %89, <4 x double> %90, <4 x double> %87
%94 = extractelement <4 x double> %70, i32 0
%95 = fcmp ogt double %94, 0.000000e+00
%96 = shufflevector <4 x double> <double 0.000000e+00, double undef, double undef, double undef>, <4 x double> %70, <4 x i32> <i32 4, i32 0, i32 0, i32 0>
%97 = select i1 %95, <4 x double> %96, <4 x double> zeroinitializer
%98 = select i1 %95, <4 x double> <double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00>, <4 x double> zeroinitializer
%99 = extractelement <4 x double> %70, i32 1
%100 = fcmp ogt double %99, 0.000000e+00
%101 = insertelement <4 x double> %98, double 1.000000e+00, i32 1
%102 = shufflevector <4 x double> %97, <4 x double> %70, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
%103 = select i1 %100, <4 x double> %102, <4 x double> %97
%104 = select i1 %100, <4 x double> %101, <4 x double> %98
%105 = extractelement <4 x double> %70, i32 2
%106 = fcmp ogt double %105, 0.000000e+00
%107 = insertelement <4 x double> %104, double 1.000000e+00, i32 2
%108 = shufflevector <4 x double> %103, <4 x double> %70, <4 x i32> <i32 0, i32 1, i32 6, i32 3>
%109 = select i1 %106, <4 x double> %108, <4 x double> %103
%110 = select i1 %106, <4 x double> %107, <4 x double> %104
%111 = extractelement <4 x double> %70, i32 3
%112 = fcmp ogt double %111, 0.000000e+00
%113 = insertelement <4 x double> %110, double 1.000000e+00, i32 3
%114 = shufflevector <4 x double> %109, <4 x double> %70, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
%115 = select i1 %112, <4 x double> %114, <4 x double> %109
%116 = select i1 %112, <4 x double> %113, <4 x double> %110
%117 = fmul <4 x double> %67, %93
%118 = fmul <4 x double> %68, %116
%119 = shl i32 %42, 1
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds <4 x double>, <4 x double> addrspace(1)* %4, i64 %120
store <4 x double> %92, <4 x double> addrspace(1)* %121, align 32, !tbaa !7
%122 = or i32 %119, 1
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds <4 x double>, <4 x double> addrspace(1)* %4, i64 %123
store <4 x double> %115, <4 x double> addrspace(1)* %124, align 32, !tbaa !7
%125 = getelementptr inbounds <4 x double>, <4 x double> addrspace(1)* %5, i64 %120
store <4 x double> %117, <4 x double> addrspace(1)* %125, align 32, !tbaa !7
%126 = getelementptr inbounds <4 x double>, <4 x double> addrspace(1)* %5, i64 %123
store <4 x double> %118, <4 x double> addrspace(1)* %126, align 32, !tbaa !7
call void @llvm.lifetime.end(i64 16, i8* %40) #5
call void @llvm.lifetime.end(i64 32, i8* %39) #5
call void @llvm.lifetime.end(i64 32, i8* %38) #5
ret void
; <label>:127: ; preds = %1218, %47
%128 = phi <4 x i32> [ %45, %47 ], [ %1219, %1218 ]
%129 = phi i32 [ 1, %47 ], [ %1216, %1218 ]
%130 = phi <4 x double> [ zeroinitializer, %47 ], [ %1215, %1218 ]
%131 = phi <4 x double> [ zeroinitializer, %47 ], [ %882, %1218 ]
%132 = phi <4 x double> [ %19, %47 ], [ %545, %1218 ]
%133 = phi <4 x double> [ %19, %47 ], [ %544, %1218 ]
%134 = phi <4 x double> [ %19, %47 ], [ %543, %1218 ]
%135 = phi <4 x double> [ %19, %47 ], [ %339, %1218 ]
call void @generateRand(<4 x i32> %128, <4 x double> addrspace(4)* %48, <4 x double> addrspace(4)* %49, <4 x i32> addrspace(4)* %50)
%136 = load <4 x double>, <4 x double>* %7, align 32, !tbaa !7
%137 = tail call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %15, <4 x double> %136, <4 x double> %13)
%138 = extractelement <4 x double> %137, i32 0
%139 = fmul double %138, 0x40571547652B82FE
%140 = fptosi double %139 to i32
%141 = sitofp i32 %140 to double
%142 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %141, double %138) #6
%143 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %141, double %142) #6
%144 = and i32 %140, 63
%145 = ashr i32 %140, 6
%146 = tail call double @llvm.fma.f64(double %143, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%147 = tail call double @llvm.fma.f64(double %143, double %146, double 0x3FA5555555555555) #6
%148 = tail call double @llvm.fma.f64(double %143, double %147, double 0x3FC5555555555555) #6
%149 = tail call double @llvm.fma.f64(double %143, double %148, double 5.000000e-01) #6
%150 = tail call double @llvm.fma.f64(double %143, double %149, double 1.000000e+00) #6
%151 = fmul double %143, %150
%152 = zext i32 %144 to i64
%153 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %152
%154 = load <2 x double>, <2 x double> addrspace(2)* %153, align 16, !tbaa !7
%155 = extractelement <2 x double> %154, i32 0
%156 = extractelement <2 x double> %154, i32 1
%157 = fadd double %155, %156
%158 = tail call double @llvm.fma.f64(double %157, double %151, double %156) #6
%159 = fadd double %155, %158
%160 = icmp slt i32 %145, -1022
br i1 %160, label %165, label %161
; <label>:161: ; preds = %127
%162 = icmp eq i32 %145, -1022
%163 = fcmp olt double %159, 1.000000e+00
%164 = and i1 %162, %163
br label %165
; <label>:165: ; preds = %161, %127
%166 = phi i1 [ true, %127 ], [ %164, %161 ]
%167 = ashr i32 %140, 8
%168 = add nsw i32 %167, 1023
%169 = zext i32 %168 to i64
%170 = shl i64 %169, 52
%171 = bitcast i64 %170 to double
%172 = fmul double %171, %159
%173 = sub nsw i32 1023, %167
%174 = add nsw i32 %173, %145
%175 = zext i32 %174 to i64
%176 = shl i64 %175, 52
%177 = bitcast i64 %176 to double
%178 = fmul double %177, %172
%179 = tail call double @llvm.amdgcn.ldexp.f64(double %159, i32 %145) #5
%180 = select i1 %166, double %178, double %179
%181 = fcmp uno double %138, 0.000000e+00
%182 = select i1 %181, double %138, double %180
%183 = fcmp ogt double %138, 0x40862E42FEFA39EF
%184 = select i1 %183, double 0x7FF0000000000000, double %182
%185 = fcmp olt double %138, 0xC0874910D52D3051
%186 = select i1 %185, double 0.000000e+00, double %184
%187 = insertelement <4 x double> undef, double %186, i32 0
%188 = extractelement <4 x double> %137, i32 1
%189 = fmul double %188, 0x40571547652B82FE
%190 = fptosi double %189 to i32
%191 = sitofp i32 %190 to double
%192 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %191, double %188) #6
%193 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %191, double %192) #6
%194 = and i32 %190, 63
%195 = ashr i32 %190, 6
%196 = tail call double @llvm.fma.f64(double %193, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%197 = tail call double @llvm.fma.f64(double %193, double %196, double 0x3FA5555555555555) #6
%198 = tail call double @llvm.fma.f64(double %193, double %197, double 0x3FC5555555555555) #6
%199 = tail call double @llvm.fma.f64(double %193, double %198, double 5.000000e-01) #6
%200 = tail call double @llvm.fma.f64(double %193, double %199, double 1.000000e+00) #6
%201 = fmul double %193, %200
%202 = zext i32 %194 to i64
%203 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %202
%204 = load <2 x double>, <2 x double> addrspace(2)* %203, align 16, !tbaa !7
%205 = extractelement <2 x double> %204, i32 0
%206 = extractelement <2 x double> %204, i32 1
%207 = fadd double %205, %206
%208 = tail call double @llvm.fma.f64(double %207, double %201, double %206) #6
%209 = fadd double %205, %208
%210 = icmp slt i32 %195, -1022
br i1 %210, label %215, label %211
; <label>:211: ; preds = %165
%212 = icmp eq i32 %195, -1022
%213 = fcmp olt double %209, 1.000000e+00
%214 = and i1 %212, %213
br label %215
; <label>:215: ; preds = %211, %165
%216 = phi i1 [ true, %165 ], [ %214, %211 ]
%217 = ashr i32 %190, 8
%218 = add nsw i32 %217, 1023
%219 = zext i32 %218 to i64
%220 = shl i64 %219, 52
%221 = bitcast i64 %220 to double
%222 = fmul double %221, %209
%223 = sub nsw i32 1023, %217
%224 = add nsw i32 %223, %195
%225 = zext i32 %224 to i64
%226 = shl i64 %225, 52
%227 = bitcast i64 %226 to double
%228 = fmul double %227, %222
%229 = tail call double @llvm.amdgcn.ldexp.f64(double %209, i32 %195) #5
%230 = select i1 %216, double %228, double %229
%231 = fcmp uno double %188, 0.000000e+00
%232 = select i1 %231, double %188, double %230
%233 = fcmp ogt double %188, 0x40862E42FEFA39EF
%234 = select i1 %233, double 0x7FF0000000000000, double %232
%235 = fcmp olt double %188, 0xC0874910D52D3051
%236 = select i1 %235, double 0.000000e+00, double %234
%237 = insertelement <4 x double> %187, double %236, i32 1
%238 = extractelement <4 x double> %137, i32 2
%239 = fmul double %238, 0x40571547652B82FE
%240 = fptosi double %239 to i32
%241 = sitofp i32 %240 to double
%242 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %241, double %238) #6
%243 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %241, double %242) #6
%244 = and i32 %240, 63
%245 = ashr i32 %240, 6
%246 = tail call double @llvm.fma.f64(double %243, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%247 = tail call double @llvm.fma.f64(double %243, double %246, double 0x3FA5555555555555) #6
%248 = tail call double @llvm.fma.f64(double %243, double %247, double 0x3FC5555555555555) #6
%249 = tail call double @llvm.fma.f64(double %243, double %248, double 5.000000e-01) #6
%250 = tail call double @llvm.fma.f64(double %243, double %249, double 1.000000e+00) #6
%251 = fmul double %243, %250
%252 = zext i32 %244 to i64
%253 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %252
%254 = load <2 x double>, <2 x double> addrspace(2)* %253, align 16, !tbaa !7
%255 = extractelement <2 x double> %254, i32 0
%256 = extractelement <2 x double> %254, i32 1
%257 = fadd double %255, %256
%258 = tail call double @llvm.fma.f64(double %257, double %251, double %256) #6
%259 = fadd double %255, %258
%260 = icmp slt i32 %245, -1022
br i1 %260, label %265, label %261
; <label>:261: ; preds = %215
%262 = icmp eq i32 %245, -1022
%263 = fcmp olt double %259, 1.000000e+00
%264 = and i1 %262, %263
br label %265
; <label>:265: ; preds = %261, %215
%266 = phi i1 [ true, %215 ], [ %264, %261 ]
%267 = ashr i32 %240, 8
%268 = add nsw i32 %267, 1023
%269 = zext i32 %268 to i64
%270 = shl i64 %269, 52
%271 = bitcast i64 %270 to double
%272 = fmul double %271, %259
%273 = sub nsw i32 1023, %267
%274 = add nsw i32 %273, %245
%275 = zext i32 %274 to i64
%276 = shl i64 %275, 52
%277 = bitcast i64 %276 to double
%278 = fmul double %277, %272
%279 = tail call double @llvm.amdgcn.ldexp.f64(double %259, i32 %245) #5
%280 = select i1 %266, double %278, double %279
%281 = fcmp uno double %238, 0.000000e+00
%282 = select i1 %281, double %238, double %280
%283 = fcmp ogt double %238, 0x40862E42FEFA39EF
%284 = select i1 %283, double 0x7FF0000000000000, double %282
%285 = fcmp olt double %238, 0xC0874910D52D3051
%286 = select i1 %285, double 0.000000e+00, double %284
%287 = insertelement <4 x double> undef, double %286, i32 0
%288 = extractelement <4 x double> %137, i32 3
%289 = fmul double %288, 0x40571547652B82FE
%290 = fptosi double %289 to i32
%291 = sitofp i32 %290 to double
%292 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %291, double %288) #6
%293 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %291, double %292) #6
%294 = and i32 %290, 63
%295 = ashr i32 %290, 6
%296 = tail call double @llvm.fma.f64(double %293, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%297 = tail call double @llvm.fma.f64(double %293, double %296, double 0x3FA5555555555555) #6
%298 = tail call double @llvm.fma.f64(double %293, double %297, double 0x3FC5555555555555) #6
%299 = tail call double @llvm.fma.f64(double %293, double %298, double 5.000000e-01) #6
%300 = tail call double @llvm.fma.f64(double %293, double %299, double 1.000000e+00) #6
%301 = fmul double %293, %300
%302 = zext i32 %294 to i64
%303 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %302
%304 = load <2 x double>, <2 x double> addrspace(2)* %303, align 16, !tbaa !7
%305 = extractelement <2 x double> %304, i32 0
%306 = extractelement <2 x double> %304, i32 1
%307 = fadd double %305, %306
%308 = tail call double @llvm.fma.f64(double %307, double %301, double %306) #6
%309 = fadd double %305, %308
%310 = icmp slt i32 %295, -1022
br i1 %310, label %315, label %311
; <label>:311: ; preds = %265
%312 = icmp eq i32 %295, -1022
%313 = fcmp olt double %309, 1.000000e+00
%314 = and i1 %312, %313
br label %315
; <label>:315: ; preds = %265, %311
%316 = phi i1 [ true, %265 ], [ %314, %311 ]
%317 = ashr i32 %290, 8
%318 = add nsw i32 %317, 1023
%319 = zext i32 %318 to i64
%320 = shl i64 %319, 52
%321 = bitcast i64 %320 to double
%322 = fmul double %321, %309
%323 = sub nsw i32 1023, %317
%324 = add nsw i32 %323, %295
%325 = zext i32 %324 to i64
%326 = shl i64 %325, 52
%327 = bitcast i64 %326 to double
%328 = fmul double %327, %322
%329 = tail call double @llvm.amdgcn.ldexp.f64(double %309, i32 %295) #5
%330 = select i1 %316, double %328, double %329
%331 = fcmp uno double %288, 0.000000e+00
%332 = select i1 %331, double %288, double %330
%333 = fcmp ogt double %288, 0x40862E42FEFA39EF
%334 = select i1 %333, double 0x7FF0000000000000, double %332
%335 = fcmp olt double %288, 0xC0874910D52D3051
%336 = select i1 %335, double 0.000000e+00, double %334
%337 = insertelement <4 x double> %287, double %336, i32 1
%338 = shufflevector <4 x double> %237, <4 x double> %337, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%339 = fmul <4 x double> %135, %338
%340 = load <4 x double>, <4 x double>* %8, align 32, !tbaa !7
%341 = tail call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %15, <4 x double> %340, <4 x double> %13)
%342 = extractelement <4 x double> %341, i32 0
%343 = fmul double %342, 0x40571547652B82FE
%344 = fptosi double %343 to i32
%345 = sitofp i32 %344 to double
%346 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %345, double %342) #6
%347 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %345, double %346) #6
%348 = and i32 %344, 63
%349 = ashr i32 %344, 6
%350 = tail call double @llvm.fma.f64(double %347, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%351 = tail call double @llvm.fma.f64(double %347, double %350, double 0x3FA5555555555555) #6
%352 = tail call double @llvm.fma.f64(double %347, double %351, double 0x3FC5555555555555) #6
%353 = tail call double @llvm.fma.f64(double %347, double %352, double 5.000000e-01) #6
%354 = tail call double @llvm.fma.f64(double %347, double %353, double 1.000000e+00) #6
%355 = fmul double %347, %354
%356 = zext i32 %348 to i64
%357 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %356
%358 = load <2 x double>, <2 x double> addrspace(2)* %357, align 16, !tbaa !7
%359 = extractelement <2 x double> %358, i32 0
%360 = extractelement <2 x double> %358, i32 1
%361 = fadd double %359, %360
%362 = tail call double @llvm.fma.f64(double %361, double %355, double %360) #6
%363 = fadd double %359, %362
%364 = icmp slt i32 %349, -1022
br i1 %364, label %369, label %365
; <label>:365: ; preds = %315
%366 = icmp eq i32 %349, -1022
%367 = fcmp olt double %363, 1.000000e+00
%368 = and i1 %366, %367
br label %369
; <label>:369: ; preds = %365, %315
%370 = phi i1 [ true, %315 ], [ %368, %365 ]
%371 = ashr i32 %344, 8
%372 = add nsw i32 %371, 1023
%373 = zext i32 %372 to i64
%374 = shl i64 %373, 52
%375 = bitcast i64 %374 to double
%376 = fmul double %375, %363
%377 = sub nsw i32 1023, %371
%378 = add nsw i32 %377, %349
%379 = zext i32 %378 to i64
%380 = shl i64 %379, 52
%381 = bitcast i64 %380 to double
%382 = fmul double %381, %376
%383 = tail call double @llvm.amdgcn.ldexp.f64(double %363, i32 %349) #5
%384 = select i1 %370, double %382, double %383
%385 = fcmp uno double %342, 0.000000e+00
%386 = select i1 %385, double %342, double %384
%387 = fcmp ogt double %342, 0x40862E42FEFA39EF
%388 = select i1 %387, double 0x7FF0000000000000, double %386
%389 = fcmp olt double %342, 0xC0874910D52D3051
%390 = select i1 %389, double 0.000000e+00, double %388
%391 = insertelement <4 x double> undef, double %390, i32 0
%392 = extractelement <4 x double> %341, i32 1
%393 = fmul double %392, 0x40571547652B82FE
%394 = fptosi double %393 to i32
%395 = sitofp i32 %394 to double
%396 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %395, double %392) #6
%397 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %395, double %396) #6
%398 = and i32 %394, 63
%399 = ashr i32 %394, 6
%400 = tail call double @llvm.fma.f64(double %397, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%401 = tail call double @llvm.fma.f64(double %397, double %400, double 0x3FA5555555555555) #6
%402 = tail call double @llvm.fma.f64(double %397, double %401, double 0x3FC5555555555555) #6
%403 = tail call double @llvm.fma.f64(double %397, double %402, double 5.000000e-01) #6
%404 = tail call double @llvm.fma.f64(double %397, double %403, double 1.000000e+00) #6
%405 = fmul double %397, %404
%406 = zext i32 %398 to i64
%407 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %406
%408 = load <2 x double>, <2 x double> addrspace(2)* %407, align 16, !tbaa !7
%409 = extractelement <2 x double> %408, i32 0
%410 = extractelement <2 x double> %408, i32 1
%411 = fadd double %409, %410
%412 = tail call double @llvm.fma.f64(double %411, double %405, double %410) #6
%413 = fadd double %409, %412
%414 = icmp slt i32 %399, -1022
br i1 %414, label %419, label %415
; <label>:415: ; preds = %369
%416 = icmp eq i32 %399, -1022
%417 = fcmp olt double %413, 1.000000e+00
%418 = and i1 %416, %417
br label %419
; <label>:419: ; preds = %415, %369
%420 = phi i1 [ true, %369 ], [ %418, %415 ]
%421 = ashr i32 %394, 8
%422 = add nsw i32 %421, 1023
%423 = zext i32 %422 to i64
%424 = shl i64 %423, 52
%425 = bitcast i64 %424 to double
%426 = fmul double %425, %413
%427 = sub nsw i32 1023, %421
%428 = add nsw i32 %427, %399
%429 = zext i32 %428 to i64
%430 = shl i64 %429, 52
%431 = bitcast i64 %430 to double
%432 = fmul double %431, %426
%433 = tail call double @llvm.amdgcn.ldexp.f64(double %413, i32 %399) #5
%434 = select i1 %420, double %432, double %433
%435 = fcmp uno double %392, 0.000000e+00
%436 = select i1 %435, double %392, double %434
%437 = fcmp ogt double %392, 0x40862E42FEFA39EF
%438 = select i1 %437, double 0x7FF0000000000000, double %436
%439 = fcmp olt double %392, 0xC0874910D52D3051
%440 = select i1 %439, double 0.000000e+00, double %438
%441 = insertelement <4 x double> %391, double %440, i32 1
%442 = extractelement <4 x double> %341, i32 2
%443 = fmul double %442, 0x40571547652B82FE
%444 = fptosi double %443 to i32
%445 = sitofp i32 %444 to double
%446 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %445, double %442) #6
%447 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %445, double %446) #6
%448 = and i32 %444, 63
%449 = ashr i32 %444, 6
%450 = tail call double @llvm.fma.f64(double %447, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%451 = tail call double @llvm.fma.f64(double %447, double %450, double 0x3FA5555555555555) #6
%452 = tail call double @llvm.fma.f64(double %447, double %451, double 0x3FC5555555555555) #6
%453 = tail call double @llvm.fma.f64(double %447, double %452, double 5.000000e-01) #6
%454 = tail call double @llvm.fma.f64(double %447, double %453, double 1.000000e+00) #6
%455 = fmul double %447, %454
%456 = zext i32 %448 to i64
%457 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %456
%458 = load <2 x double>, <2 x double> addrspace(2)* %457, align 16, !tbaa !7
%459 = extractelement <2 x double> %458, i32 0
%460 = extractelement <2 x double> %458, i32 1
%461 = fadd double %459, %460
%462 = tail call double @llvm.fma.f64(double %461, double %455, double %460) #6
%463 = fadd double %459, %462
%464 = icmp slt i32 %449, -1022
br i1 %464, label %469, label %465
; <label>:465: ; preds = %419
%466 = icmp eq i32 %449, -1022
%467 = fcmp olt double %463, 1.000000e+00
%468 = and i1 %466, %467
br label %469
; <label>:469: ; preds = %465, %419
%470 = phi i1 [ true, %419 ], [ %468, %465 ]
%471 = ashr i32 %444, 8
%472 = add nsw i32 %471, 1023
%473 = zext i32 %472 to i64
%474 = shl i64 %473, 52
%475 = bitcast i64 %474 to double
%476 = fmul double %475, %463
%477 = sub nsw i32 1023, %471
%478 = add nsw i32 %477, %449
%479 = zext i32 %478 to i64
%480 = shl i64 %479, 52
%481 = bitcast i64 %480 to double
%482 = fmul double %481, %476
%483 = tail call double @llvm.amdgcn.ldexp.f64(double %463, i32 %449) #5
%484 = select i1 %470, double %482, double %483
%485 = fcmp uno double %442, 0.000000e+00
%486 = select i1 %485, double %442, double %484
%487 = fcmp ogt double %442, 0x40862E42FEFA39EF
%488 = select i1 %487, double 0x7FF0000000000000, double %486
%489 = fcmp olt double %442, 0xC0874910D52D3051
%490 = select i1 %489, double 0.000000e+00, double %488
%491 = insertelement <4 x double> undef, double %490, i32 0
%492 = extractelement <4 x double> %341, i32 3
%493 = fmul double %492, 0x40571547652B82FE
%494 = fptosi double %493 to i32
%495 = sitofp i32 %494 to double
%496 = tail call double @llvm.fma.f64(double 0xBF862E42FEFA0000, double %495, double %492) #6
%497 = tail call double @llvm.fma.f64(double 0xBD1CF79ABC9E3B39, double %495, double %496) #6
%498 = and i32 %494, 63
%499 = ashr i32 %494, 6
%500 = tail call double @llvm.fma.f64(double %497, double 0x3F56C16C16C16C17, double 0x3F81111111111111) #6
%501 = tail call double @llvm.fma.f64(double %497, double %500, double 0x3FA5555555555555) #6
%502 = tail call double @llvm.fma.f64(double %497, double %501, double 0x3FC5555555555555) #6
%503 = tail call double @llvm.fma.f64(double %497, double %502, double 5.000000e-01) #6
%504 = tail call double @llvm.fma.f64(double %497, double %503, double 1.000000e+00) #6
%505 = fmul double %497, %504
%506 = zext i32 %498 to i64
%507 = getelementptr inbounds [64 x <2 x double>], [64 x <2 x double>] addrspace(2)* @TWO_TO_JBY64_EP, i64 0, i64 %506
%508 = load <2 x double>, <2 x double> addrspace(2)* %507, align 16, !tbaa !7
%509 = extractelement <2 x double> %508, i32 0
%510 = extractelement <2 x double> %508, i32 1
%511 = fadd double %509, %510
%512 = tail call double @llvm.fma.f64(double %511, double %505, double %510) #6
%513 = fadd double %509, %512
%514 = icmp slt i32 %499, -1022
br i1 %514, label %519, label %515
; <label>:515: ; preds = %469
%516 = icmp eq i32 %499, -1022
%517 = fcmp olt double %513, 1.000000e+00
%518 = and i1 %516, %517
br label %519
; <label>:519: ; preds = %469, %515
%520 = phi i1 [ true, %469 ], [ %518, %515 ]
%521 = ashr i32 %494, 8
%522 = add nsw i32 %521, 1023
%523 = zext i32 %522 to i64
%524 = shl i64 %523, 52
%525 = bitcast i64 %524 to double
%526 = fmul double %525, %513
%527 = sub nsw i32 1023, %521
%528 = add nsw i32 %527, %499
%529 = zext i32 %528 to i64
%530 = shl i64 %529, 52
%531 = bitcast i64 %530 to double
%532 = fmul double %531, %526
%533 = tail call double @llvm.amdgcn.ldexp.f64(double %513, i32 %499) #5
%534 = select i1 %520, double %532, double %533
%535 = fcmp uno double %492, 0.000000e+00
%536 = select i1 %535, double %492, double %534
%537 = fcmp ogt double %492, 0x40862E42FEFA39EF
%538 = select i1 %537, double 0x7FF0000000000000, double %536
%539 = fcmp olt double %492, 0xC0874910D52D3051
%540 = select i1 %539, double 0.000000e+00, double %538
%541 = insertelement <4 x double> %491, double %540, i32 1
%542 = shufflevector <4 x double> %441, <4 x double> %541, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%543 = fmul <4 x double> %134, %542
%544 = fadd <4 x double> %133, %339
%545 = fadd <4 x double> %132, %543
%546 = sitofp i32 %129 to double
%547 = insertelement <4 x double> undef, double %546, i32 0
%548 = shufflevector <4 x double> %547, <4 x double> undef, <4 x i32> zeroinitializer
%549 = fmul <4 x double> %51, %548
%550 = fdiv <4 x double> %339, %19
%551 = extractelement <4 x double> %550, i32 0
%552 = fcmp oge double %551, 0x3FEE0FAA00000000
%553 = fcmp ole double %551, 0x3FF1082C00000000
%554 = and i1 %552, %553
%555 = fadd double %551, -1.000000e+00
%556 = fadd double %555, 2.000000e+00
%557 = fdiv double %555, %556
%558 = fmul double %555, %557
%559 = fadd double %557, %557
%560 = fmul double %559, %559
%561 = fmul double %559, %560
%562 = tail call double @llvm.fma.f64(double %560, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%563 = tail call double @llvm.fma.f64(double %560, double %562, double 0x3F89999999BAC6D4) #6
%564 = tail call double @llvm.fma.f64(double %560, double %563, double 0x3FB55555555554E6) #6
%565 = fsub double -0.000000e+00, %558
%566 = tail call double @llvm.fma.f64(double %561, double %564, double %565) #6
%567 = bitcast double %555 to i64
%568 = and i64 %567, -4294967296
%569 = bitcast i64 %568 to double
%570 = fsub double %555, %569
%571 = fadd double %570, %566
%572 = fmul double %571, 0x3ECB295C17F0BBBE
%573 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %569, double %572) #6
%574 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %571, double %573) #6
%575 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %569, double %574) #6
%576 = bitcast double %551 to i64
%577 = or i64 %576, 274719577269600256
%578 = bitcast i64 %577 to double
%579 = fadd double %578, 0x83D0000000000000
%580 = bitcast double %579 to i64
%581 = icmp ult i64 %576, 4503599627370496
%582 = select i1 %581, i64 %580, i64 %576
%583 = bitcast i64 %582 to <2 x i32>
%584 = extractelement <2 x i32> %583, i32 1
%585 = lshr i32 %584, 20
%586 = and i32 %585, 2047
%587 = select i1 %581, i32 -1083, i32 -1023
%588 = add nsw i32 %586, %587
%589 = and i64 %582, 4503599627370495
%590 = or i64 %589, 4602678819172646912
%591 = bitcast i64 %590 to double
%592 = ashr i32 %584, 13
%593 = lshr i32 %592, 1
%594 = and i32 %593, 63
%595 = or i32 %594, 64
%596 = and i32 %592, 1
%597 = add nuw nsw i32 %595, %596
%598 = add nsw i32 %597, -64
%599 = sext i32 %598 to i64
%600 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %599
%601 = load <2 x double>, <2 x double> addrspace(2)* %600, align 16, !tbaa !7
%602 = extractelement <2 x double> %601, i32 0
%603 = extractelement <2 x double> %601, i32 1
%604 = sitofp i32 %597 to double
%605 = fmul double %604, 7.812500e-03
%606 = fsub double %591, %605
%607 = tail call double @llvm.fma.f64(double %606, double 5.000000e-01, double %605) #6
%608 = fdiv double %606, %607
%609 = fmul double %608, %608
%610 = tail call double @llvm.fma.f64(double %609, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%611 = tail call double @llvm.fma.f64(double %609, double %610, double 0x3FB5555555555557) #6
%612 = fmul double %609, %611
%613 = tail call double @llvm.fma.f64(double %608, double %612, double %608) #6
%614 = fadd double %613, %603
%615 = sitofp i32 %588 to double
%616 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %602, double %615) #6
%617 = fmul double %614, 0x3ECB295C17F0BBBE
%618 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %602, double %617) #6
%619 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %614, double %618) #6
%620 = fadd double %616, %619
%621 = select i1 %554, double %575, double %620
%622 = tail call double @llvm.fabs.f64(double %551) #3
%623 = fcmp oeq double %622, 0x7FF0000000000000
%624 = fcmp uno double %551, 0.000000e+00
%625 = fcmp olt double %551, 0.000000e+00
%626 = or i1 %624, %625
%627 = fcmp oeq double %551, 0.000000e+00
%628 = fmul double %621, 0x3FE62E42FEFA39EF
%629 = select i1 %623, double 0x7FF0000000000000, double %628
%630 = select i1 %626, double 0x7FF8000000000000, double %629
%631 = select i1 %627, double 0xFFF0000000000000, double %630
%632 = insertelement <4 x double> undef, double %631, i32 0
%633 = extractelement <4 x double> %550, i32 1
%634 = fcmp oge double %633, 0x3FEE0FAA00000000
%635 = fcmp ole double %633, 0x3FF1082C00000000
%636 = and i1 %634, %635
%637 = fadd double %633, -1.000000e+00
%638 = fadd double %637, 2.000000e+00
%639 = fdiv double %637, %638
%640 = fmul double %637, %639
%641 = fadd double %639, %639
%642 = fmul double %641, %641
%643 = fmul double %641, %642
%644 = tail call double @llvm.fma.f64(double %642, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%645 = tail call double @llvm.fma.f64(double %642, double %644, double 0x3F89999999BAC6D4) #6
%646 = tail call double @llvm.fma.f64(double %642, double %645, double 0x3FB55555555554E6) #6
%647 = fsub double -0.000000e+00, %640
%648 = tail call double @llvm.fma.f64(double %643, double %646, double %647) #6
%649 = bitcast double %637 to i64
%650 = and i64 %649, -4294967296
%651 = bitcast i64 %650 to double
%652 = fsub double %637, %651
%653 = fadd double %652, %648
%654 = fmul double %653, 0x3ECB295C17F0BBBE
%655 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %651, double %654) #6
%656 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %653, double %655) #6
%657 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %651, double %656) #6
%658 = bitcast double %633 to i64
%659 = or i64 %658, 274719577269600256
%660 = bitcast i64 %659 to double
%661 = fadd double %660, 0x83D0000000000000
%662 = bitcast double %661 to i64
%663 = icmp ult i64 %658, 4503599627370496
%664 = select i1 %663, i64 %662, i64 %658
%665 = bitcast i64 %664 to <2 x i32>
%666 = extractelement <2 x i32> %665, i32 1
%667 = lshr i32 %666, 20
%668 = and i32 %667, 2047
%669 = select i1 %663, i32 -1083, i32 -1023
%670 = add nsw i32 %668, %669
%671 = and i64 %664, 4503599627370495
%672 = or i64 %671, 4602678819172646912
%673 = bitcast i64 %672 to double
%674 = ashr i32 %666, 13
%675 = lshr i32 %674, 1
%676 = and i32 %675, 63
%677 = or i32 %676, 64
%678 = and i32 %674, 1
%679 = add nuw nsw i32 %677, %678
%680 = add nsw i32 %679, -64
%681 = sext i32 %680 to i64
%682 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %681
%683 = load <2 x double>, <2 x double> addrspace(2)* %682, align 16, !tbaa !7
%684 = extractelement <2 x double> %683, i32 0
%685 = extractelement <2 x double> %683, i32 1
%686 = sitofp i32 %679 to double
%687 = fmul double %686, 7.812500e-03
%688 = fsub double %673, %687
%689 = tail call double @llvm.fma.f64(double %688, double 5.000000e-01, double %687) #6
%690 = fdiv double %688, %689
%691 = fmul double %690, %690
%692 = tail call double @llvm.fma.f64(double %691, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%693 = tail call double @llvm.fma.f64(double %691, double %692, double 0x3FB5555555555557) #6
%694 = fmul double %691, %693
%695 = tail call double @llvm.fma.f64(double %690, double %694, double %690) #6
%696 = fadd double %695, %685
%697 = sitofp i32 %670 to double
%698 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %684, double %697) #6
%699 = fmul double %696, 0x3ECB295C17F0BBBE
%700 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %684, double %699) #6
%701 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %696, double %700) #6
%702 = fadd double %698, %701
%703 = select i1 %636, double %657, double %702
%704 = tail call double @llvm.fabs.f64(double %633) #3
%705 = fcmp oeq double %704, 0x7FF0000000000000
%706 = fcmp uno double %633, 0.000000e+00
%707 = fcmp olt double %633, 0.000000e+00
%708 = or i1 %706, %707
%709 = fcmp oeq double %633, 0.000000e+00
%710 = fmul double %703, 0x3FE62E42FEFA39EF
%711 = select i1 %705, double 0x7FF0000000000000, double %710
%712 = select i1 %708, double 0x7FF8000000000000, double %711
%713 = select i1 %709, double 0xFFF0000000000000, double %712
%714 = insertelement <4 x double> %632, double %713, i32 1
%715 = extractelement <4 x double> %550, i32 2
%716 = fcmp oge double %715, 0x3FEE0FAA00000000
%717 = fcmp ole double %715, 0x3FF1082C00000000
%718 = and i1 %716, %717
%719 = fadd double %715, -1.000000e+00
%720 = fadd double %719, 2.000000e+00
%721 = fdiv double %719, %720
%722 = fmul double %719, %721
%723 = fadd double %721, %721
%724 = fmul double %723, %723
%725 = fmul double %723, %724
%726 = tail call double @llvm.fma.f64(double %724, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%727 = tail call double @llvm.fma.f64(double %724, double %726, double 0x3F89999999BAC6D4) #6
%728 = tail call double @llvm.fma.f64(double %724, double %727, double 0x3FB55555555554E6) #6
%729 = fsub double -0.000000e+00, %722
%730 = tail call double @llvm.fma.f64(double %725, double %728, double %729) #6
%731 = bitcast double %719 to i64
%732 = and i64 %731, -4294967296
%733 = bitcast i64 %732 to double
%734 = fsub double %719, %733
%735 = fadd double %734, %730
%736 = fmul double %735, 0x3ECB295C17F0BBBE
%737 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %733, double %736) #6
%738 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %735, double %737) #6
%739 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %733, double %738) #6
%740 = bitcast double %715 to i64
%741 = or i64 %740, 274719577269600256
%742 = bitcast i64 %741 to double
%743 = fadd double %742, 0x83D0000000000000
%744 = bitcast double %743 to i64
%745 = icmp ult i64 %740, 4503599627370496
%746 = select i1 %745, i64 %744, i64 %740
%747 = bitcast i64 %746 to <2 x i32>
%748 = extractelement <2 x i32> %747, i32 1
%749 = lshr i32 %748, 20
%750 = and i32 %749, 2047
%751 = select i1 %745, i32 -1083, i32 -1023
%752 = add nsw i32 %750, %751
%753 = and i64 %746, 4503599627370495
%754 = or i64 %753, 4602678819172646912
%755 = bitcast i64 %754 to double
%756 = ashr i32 %748, 13
%757 = lshr i32 %756, 1
%758 = and i32 %757, 63
%759 = or i32 %758, 64
%760 = and i32 %756, 1
%761 = add nuw nsw i32 %759, %760
%762 = add nsw i32 %761, -64
%763 = sext i32 %762 to i64
%764 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %763
%765 = load <2 x double>, <2 x double> addrspace(2)* %764, align 16, !tbaa !7
%766 = extractelement <2 x double> %765, i32 0
%767 = extractelement <2 x double> %765, i32 1
%768 = sitofp i32 %761 to double
%769 = fmul double %768, 7.812500e-03
%770 = fsub double %755, %769
%771 = tail call double @llvm.fma.f64(double %770, double 5.000000e-01, double %769) #6
%772 = fdiv double %770, %771
%773 = fmul double %772, %772
%774 = tail call double @llvm.fma.f64(double %773, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%775 = tail call double @llvm.fma.f64(double %773, double %774, double 0x3FB5555555555557) #6
%776 = fmul double %773, %775
%777 = tail call double @llvm.fma.f64(double %772, double %776, double %772) #6
%778 = fadd double %777, %767
%779 = sitofp i32 %752 to double
%780 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %766, double %779) #6
%781 = fmul double %778, 0x3ECB295C17F0BBBE
%782 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %766, double %781) #6
%783 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %778, double %782) #6
%784 = fadd double %780, %783
%785 = select i1 %718, double %739, double %784
%786 = tail call double @llvm.fabs.f64(double %715) #3
%787 = fcmp oeq double %786, 0x7FF0000000000000
%788 = fcmp uno double %715, 0.000000e+00
%789 = fcmp olt double %715, 0.000000e+00
%790 = or i1 %788, %789
%791 = fcmp oeq double %715, 0.000000e+00
%792 = fmul double %785, 0x3FE62E42FEFA39EF
%793 = select i1 %787, double 0x7FF0000000000000, double %792
%794 = select i1 %790, double 0x7FF8000000000000, double %793
%795 = select i1 %791, double 0xFFF0000000000000, double %794
%796 = insertelement <4 x double> undef, double %795, i32 0
%797 = extractelement <4 x double> %550, i32 3
%798 = fcmp oge double %797, 0x3FEE0FAA00000000
%799 = fcmp ole double %797, 0x3FF1082C00000000
%800 = and i1 %798, %799
%801 = fadd double %797, -1.000000e+00
%802 = fadd double %801, 2.000000e+00
%803 = fdiv double %801, %802
%804 = fmul double %801, %803
%805 = fadd double %803, %803
%806 = fmul double %805, %805
%807 = fmul double %805, %806
%808 = tail call double @llvm.fma.f64(double %806, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%809 = tail call double @llvm.fma.f64(double %806, double %808, double 0x3F89999999BAC6D4) #6
%810 = tail call double @llvm.fma.f64(double %806, double %809, double 0x3FB55555555554E6) #6
%811 = fsub double -0.000000e+00, %804
%812 = tail call double @llvm.fma.f64(double %807, double %810, double %811) #6
%813 = bitcast double %801 to i64
%814 = and i64 %813, -4294967296
%815 = bitcast i64 %814 to double
%816 = fsub double %801, %815
%817 = fadd double %816, %812
%818 = fmul double %817, 0x3ECB295C17F0BBBE
%819 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %815, double %818) #6
%820 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %817, double %819) #6
%821 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %815, double %820) #6
%822 = bitcast double %797 to i64
%823 = or i64 %822, 274719577269600256
%824 = bitcast i64 %823 to double
%825 = fadd double %824, 0x83D0000000000000
%826 = bitcast double %825 to i64
%827 = icmp ult i64 %822, 4503599627370496
%828 = select i1 %827, i64 %826, i64 %822
%829 = bitcast i64 %828 to <2 x i32>
%830 = extractelement <2 x i32> %829, i32 1
%831 = lshr i32 %830, 20
%832 = and i32 %831, 2047
%833 = select i1 %827, i32 -1083, i32 -1023
%834 = add nsw i32 %832, %833
%835 = and i64 %828, 4503599627370495
%836 = or i64 %835, 4602678819172646912
%837 = bitcast i64 %836 to double
%838 = ashr i32 %830, 13
%839 = lshr i32 %838, 1
%840 = and i32 %839, 63
%841 = or i32 %840, 64
%842 = and i32 %838, 1
%843 = add nuw nsw i32 %841, %842
%844 = add nsw i32 %843, -64
%845 = sext i32 %844 to i64
%846 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %845
%847 = load <2 x double>, <2 x double> addrspace(2)* %846, align 16, !tbaa !7
%848 = extractelement <2 x double> %847, i32 0
%849 = extractelement <2 x double> %847, i32 1
%850 = sitofp i32 %843 to double
%851 = fmul double %850, 7.812500e-03
%852 = fsub double %837, %851
%853 = tail call double @llvm.fma.f64(double %852, double 5.000000e-01, double %851) #6
%854 = fdiv double %852, %853
%855 = fmul double %854, %854
%856 = tail call double @llvm.fma.f64(double %855, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%857 = tail call double @llvm.fma.f64(double %855, double %856, double 0x3FB5555555555557) #6
%858 = fmul double %855, %857
%859 = tail call double @llvm.fma.f64(double %854, double %858, double %854) #6
%860 = fadd double %859, %849
%861 = sitofp i32 %834 to double
%862 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %848, double %861) #6
%863 = fmul double %860, 0x3ECB295C17F0BBBE
%864 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %848, double %863) #6
%865 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %860, double %864) #6
%866 = fadd double %862, %865
%867 = select i1 %800, double %821, double %866
%868 = tail call double @llvm.fabs.f64(double %797) #3
%869 = fcmp oeq double %868, 0x7FF0000000000000
%870 = fcmp uno double %797, 0.000000e+00
%871 = fcmp olt double %797, 0.000000e+00
%872 = or i1 %870, %871
%873 = fcmp oeq double %797, 0.000000e+00
%874 = fmul double %867, 0x3FE62E42FEFA39EF
%875 = select i1 %869, double 0x7FF0000000000000, double %874
%876 = select i1 %872, double 0x7FF8000000000000, double %875
%877 = select i1 %873, double 0xFFF0000000000000, double %876
%878 = insertelement <4 x double> %796, double %877, i32 1
%879 = shufflevector <4 x double> %714, <4 x double> %878, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%880 = fsub <4 x double> %879, %549
%881 = fdiv <4 x double> %880, %21
%882 = tail call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %339, <4 x double> %881, <4 x double> %131)
%883 = fdiv <4 x double> %543, %19
%884 = extractelement <4 x double> %883, i32 0
%885 = fcmp oge double %884, 0x3FEE0FAA00000000
%886 = fcmp ole double %884, 0x3FF1082C00000000
%887 = and i1 %885, %886
%888 = fadd double %884, -1.000000e+00
%889 = fadd double %888, 2.000000e+00
%890 = fdiv double %888, %889
%891 = fmul double %888, %890
%892 = fadd double %890, %890
%893 = fmul double %892, %892
%894 = fmul double %892, %893
%895 = tail call double @llvm.fma.f64(double %893, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%896 = tail call double @llvm.fma.f64(double %893, double %895, double 0x3F89999999BAC6D4) #6
%897 = tail call double @llvm.fma.f64(double %893, double %896, double 0x3FB55555555554E6) #6
%898 = fsub double -0.000000e+00, %891
%899 = tail call double @llvm.fma.f64(double %894, double %897, double %898) #6
%900 = bitcast double %888 to i64
%901 = and i64 %900, -4294967296
%902 = bitcast i64 %901 to double
%903 = fsub double %888, %902
%904 = fadd double %903, %899
%905 = fmul double %904, 0x3ECB295C17F0BBBE
%906 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %902, double %905) #6
%907 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %904, double %906) #6
%908 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %902, double %907) #6
%909 = bitcast double %884 to i64
%910 = or i64 %909, 274719577269600256
%911 = bitcast i64 %910 to double
%912 = fadd double %911, 0x83D0000000000000
%913 = bitcast double %912 to i64
%914 = icmp ult i64 %909, 4503599627370496
%915 = select i1 %914, i64 %913, i64 %909
%916 = bitcast i64 %915 to <2 x i32>
%917 = extractelement <2 x i32> %916, i32 1
%918 = lshr i32 %917, 20
%919 = and i32 %918, 2047
%920 = select i1 %914, i32 -1083, i32 -1023
%921 = add nsw i32 %919, %920
%922 = and i64 %915, 4503599627370495
%923 = or i64 %922, 4602678819172646912
%924 = bitcast i64 %923 to double
%925 = ashr i32 %917, 13
%926 = lshr i32 %925, 1
%927 = and i32 %926, 63
%928 = or i32 %927, 64
%929 = and i32 %925, 1
%930 = add nuw nsw i32 %928, %929
%931 = add nsw i32 %930, -64
%932 = sext i32 %931 to i64
%933 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %932
%934 = load <2 x double>, <2 x double> addrspace(2)* %933, align 16, !tbaa !7
%935 = extractelement <2 x double> %934, i32 0
%936 = extractelement <2 x double> %934, i32 1
%937 = sitofp i32 %930 to double
%938 = fmul double %937, 7.812500e-03
%939 = fsub double %924, %938
%940 = tail call double @llvm.fma.f64(double %939, double 5.000000e-01, double %938) #6
%941 = fdiv double %939, %940
%942 = fmul double %941, %941
%943 = tail call double @llvm.fma.f64(double %942, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%944 = tail call double @llvm.fma.f64(double %942, double %943, double 0x3FB5555555555557) #6
%945 = fmul double %942, %944
%946 = tail call double @llvm.fma.f64(double %941, double %945, double %941) #6
%947 = fadd double %936, %946
%948 = sitofp i32 %921 to double
%949 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %935, double %948) #6
%950 = fmul double %947, 0x3ECB295C17F0BBBE
%951 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %935, double %950) #6
%952 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %947, double %951) #6
%953 = fadd double %949, %952
%954 = select i1 %887, double %908, double %953
%955 = tail call double @llvm.fabs.f64(double %884) #3
%956 = fcmp oeq double %955, 0x7FF0000000000000
%957 = fcmp uno double %884, 0.000000e+00
%958 = fcmp olt double %884, 0.000000e+00
%959 = or i1 %957, %958
%960 = fcmp oeq double %884, 0.000000e+00
%961 = fmul double %954, 0x3FE62E42FEFA39EF
%962 = select i1 %956, double 0x7FF0000000000000, double %961
%963 = select i1 %959, double 0x7FF8000000000000, double %962
%964 = select i1 %960, double 0xFFF0000000000000, double %963
%965 = insertelement <4 x double> undef, double %964, i32 0
%966 = extractelement <4 x double> %883, i32 1
%967 = fcmp oge double %966, 0x3FEE0FAA00000000
%968 = fcmp ole double %966, 0x3FF1082C00000000
%969 = and i1 %967, %968
%970 = fadd double %966, -1.000000e+00
%971 = fadd double %970, 2.000000e+00
%972 = fdiv double %970, %971
%973 = fmul double %970, %972
%974 = fadd double %972, %972
%975 = fmul double %974, %974
%976 = fmul double %974, %975
%977 = tail call double @llvm.fma.f64(double %975, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%978 = tail call double @llvm.fma.f64(double %975, double %977, double 0x3F89999999BAC6D4) #6
%979 = tail call double @llvm.fma.f64(double %975, double %978, double 0x3FB55555555554E6) #6
%980 = fsub double -0.000000e+00, %973
%981 = tail call double @llvm.fma.f64(double %976, double %979, double %980) #6
%982 = bitcast double %970 to i64
%983 = and i64 %982, -4294967296
%984 = bitcast i64 %983 to double
%985 = fsub double %970, %984
%986 = fadd double %985, %981
%987 = fmul double %986, 0x3ECB295C17F0BBBE
%988 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %984, double %987) #6
%989 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %986, double %988) #6
%990 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %984, double %989) #6
%991 = bitcast double %966 to i64
%992 = or i64 %991, 274719577269600256
%993 = bitcast i64 %992 to double
%994 = fadd double %993, 0x83D0000000000000
%995 = bitcast double %994 to i64
%996 = icmp ult i64 %991, 4503599627370496
%997 = select i1 %996, i64 %995, i64 %991
%998 = bitcast i64 %997 to <2 x i32>
%999 = extractelement <2 x i32> %998, i32 1
%1000 = lshr i32 %999, 20
%1001 = and i32 %1000, 2047
%1002 = select i1 %996, i32 -1083, i32 -1023
%1003 = add nsw i32 %1001, %1002
%1004 = and i64 %997, 4503599627370495
%1005 = or i64 %1004, 4602678819172646912
%1006 = bitcast i64 %1005 to double
%1007 = ashr i32 %999, 13
%1008 = lshr i32 %1007, 1
%1009 = and i32 %1008, 63
%1010 = or i32 %1009, 64
%1011 = and i32 %1007, 1
%1012 = add nuw nsw i32 %1010, %1011
%1013 = add nsw i32 %1012, -64
%1014 = sext i32 %1013 to i64
%1015 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %1014
%1016 = load <2 x double>, <2 x double> addrspace(2)* %1015, align 16, !tbaa !7
%1017 = extractelement <2 x double> %1016, i32 0
%1018 = extractelement <2 x double> %1016, i32 1
%1019 = sitofp i32 %1012 to double
%1020 = fmul double %1019, 7.812500e-03
%1021 = fsub double %1006, %1020
%1022 = tail call double @llvm.fma.f64(double %1021, double 5.000000e-01, double %1020) #6
%1023 = fdiv double %1021, %1022
%1024 = fmul double %1023, %1023
%1025 = tail call double @llvm.fma.f64(double %1024, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%1026 = tail call double @llvm.fma.f64(double %1024, double %1025, double 0x3FB5555555555557) #6
%1027 = fmul double %1024, %1026
%1028 = tail call double @llvm.fma.f64(double %1023, double %1027, double %1023) #6
%1029 = fadd double %1018, %1028
%1030 = sitofp i32 %1003 to double
%1031 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1017, double %1030) #6
%1032 = fmul double %1029, 0x3ECB295C17F0BBBE
%1033 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %1017, double %1032) #6
%1034 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1029, double %1033) #6
%1035 = fadd double %1031, %1034
%1036 = select i1 %969, double %990, double %1035
%1037 = tail call double @llvm.fabs.f64(double %966) #3
%1038 = fcmp oeq double %1037, 0x7FF0000000000000
%1039 = fcmp uno double %966, 0.000000e+00
%1040 = fcmp olt double %966, 0.000000e+00
%1041 = or i1 %1039, %1040
%1042 = fcmp oeq double %966, 0.000000e+00
%1043 = fmul double %1036, 0x3FE62E42FEFA39EF
%1044 = select i1 %1038, double 0x7FF0000000000000, double %1043
%1045 = select i1 %1041, double 0x7FF8000000000000, double %1044
%1046 = select i1 %1042, double 0xFFF0000000000000, double %1045
%1047 = insertelement <4 x double> %965, double %1046, i32 1
%1048 = extractelement <4 x double> %883, i32 2
%1049 = fcmp oge double %1048, 0x3FEE0FAA00000000
%1050 = fcmp ole double %1048, 0x3FF1082C00000000
%1051 = and i1 %1049, %1050
%1052 = fadd double %1048, -1.000000e+00
%1053 = fadd double %1052, 2.000000e+00
%1054 = fdiv double %1052, %1053
%1055 = fmul double %1052, %1054
%1056 = fadd double %1054, %1054
%1057 = fmul double %1056, %1056
%1058 = fmul double %1056, %1057
%1059 = tail call double @llvm.fma.f64(double %1057, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%1060 = tail call double @llvm.fma.f64(double %1057, double %1059, double 0x3F89999999BAC6D4) #6
%1061 = tail call double @llvm.fma.f64(double %1057, double %1060, double 0x3FB55555555554E6) #6
%1062 = fsub double -0.000000e+00, %1055
%1063 = tail call double @llvm.fma.f64(double %1058, double %1061, double %1062) #6
%1064 = bitcast double %1052 to i64
%1065 = and i64 %1064, -4294967296
%1066 = bitcast i64 %1065 to double
%1067 = fsub double %1052, %1066
%1068 = fadd double %1067, %1063
%1069 = fmul double %1068, 0x3ECB295C17F0BBBE
%1070 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %1066, double %1069) #6
%1071 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1068, double %1070) #6
%1072 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1066, double %1071) #6
%1073 = bitcast double %1048 to i64
%1074 = or i64 %1073, 274719577269600256
%1075 = bitcast i64 %1074 to double
%1076 = fadd double %1075, 0x83D0000000000000
%1077 = bitcast double %1076 to i64
%1078 = icmp ult i64 %1073, 4503599627370496
%1079 = select i1 %1078, i64 %1077, i64 %1073
%1080 = bitcast i64 %1079 to <2 x i32>
%1081 = extractelement <2 x i32> %1080, i32 1
%1082 = lshr i32 %1081, 20
%1083 = and i32 %1082, 2047
%1084 = select i1 %1078, i32 -1083, i32 -1023
%1085 = add nsw i32 %1083, %1084
%1086 = and i64 %1079, 4503599627370495
%1087 = or i64 %1086, 4602678819172646912
%1088 = bitcast i64 %1087 to double
%1089 = ashr i32 %1081, 13
%1090 = lshr i32 %1089, 1
%1091 = and i32 %1090, 63
%1092 = or i32 %1091, 64
%1093 = and i32 %1089, 1
%1094 = add nuw nsw i32 %1092, %1093
%1095 = add nsw i32 %1094, -64
%1096 = sext i32 %1095 to i64
%1097 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %1096
%1098 = load <2 x double>, <2 x double> addrspace(2)* %1097, align 16, !tbaa !7
%1099 = extractelement <2 x double> %1098, i32 0
%1100 = extractelement <2 x double> %1098, i32 1
%1101 = sitofp i32 %1094 to double
%1102 = fmul double %1101, 7.812500e-03
%1103 = fsub double %1088, %1102
%1104 = tail call double @llvm.fma.f64(double %1103, double 5.000000e-01, double %1102) #6
%1105 = fdiv double %1103, %1104
%1106 = fmul double %1105, %1105
%1107 = tail call double @llvm.fma.f64(double %1106, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%1108 = tail call double @llvm.fma.f64(double %1106, double %1107, double 0x3FB5555555555557) #6
%1109 = fmul double %1106, %1108
%1110 = tail call double @llvm.fma.f64(double %1105, double %1109, double %1105) #6
%1111 = fadd double %1100, %1110
%1112 = sitofp i32 %1085 to double
%1113 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1099, double %1112) #6
%1114 = fmul double %1111, 0x3ECB295C17F0BBBE
%1115 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %1099, double %1114) #6
%1116 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1111, double %1115) #6
%1117 = fadd double %1113, %1116
%1118 = select i1 %1051, double %1072, double %1117
%1119 = tail call double @llvm.fabs.f64(double %1048) #3
%1120 = fcmp oeq double %1119, 0x7FF0000000000000
%1121 = fcmp uno double %1048, 0.000000e+00
%1122 = fcmp olt double %1048, 0.000000e+00
%1123 = or i1 %1121, %1122
%1124 = fcmp oeq double %1048, 0.000000e+00
%1125 = fmul double %1118, 0x3FE62E42FEFA39EF
%1126 = select i1 %1120, double 0x7FF0000000000000, double %1125
%1127 = select i1 %1123, double 0x7FF8000000000000, double %1126
%1128 = select i1 %1124, double 0xFFF0000000000000, double %1127
%1129 = insertelement <4 x double> undef, double %1128, i32 0
%1130 = extractelement <4 x double> %883, i32 3
%1131 = fcmp oge double %1130, 0x3FEE0FAA00000000
%1132 = fcmp ole double %1130, 0x3FF1082C00000000
%1133 = and i1 %1131, %1132
%1134 = fadd double %1130, -1.000000e+00
%1135 = fadd double %1134, 2.000000e+00
%1136 = fdiv double %1134, %1135
%1137 = fmul double %1134, %1136
%1138 = fadd double %1136, %1136
%1139 = fmul double %1138, %1138
%1140 = fmul double %1138, %1139
%1141 = tail call double @llvm.fma.f64(double %1139, double 0x3F3C8034C85DFFF0, double 0x3F62492307F1519F) #6
%1142 = tail call double @llvm.fma.f64(double %1139, double %1141, double 0x3F89999999BAC6D4) #6
%1143 = tail call double @llvm.fma.f64(double %1139, double %1142, double 0x3FB55555555554E6) #6
%1144 = fsub double -0.000000e+00, %1137
%1145 = tail call double @llvm.fma.f64(double %1140, double %1143, double %1144) #6
%1146 = bitcast double %1134 to i64
%1147 = and i64 %1146, -4294967296
%1148 = bitcast i64 %1147 to double
%1149 = fsub double %1134, %1148
%1150 = fadd double %1149, %1145
%1151 = fmul double %1150, 0x3ECB295C17F0BBBE
%1152 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %1148, double %1151) #6
%1153 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1150, double %1152) #6
%1154 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1148, double %1153) #6
%1155 = bitcast double %1130 to i64
%1156 = or i64 %1155, 274719577269600256
%1157 = bitcast i64 %1156 to double
%1158 = fadd double %1157, 0x83D0000000000000
%1159 = bitcast double %1158 to i64
%1160 = icmp ult i64 %1155, 4503599627370496
%1161 = select i1 %1160, i64 %1159, i64 %1155
%1162 = bitcast i64 %1161 to <2 x i32>
%1163 = extractelement <2 x i32> %1162, i32 1
%1164 = lshr i32 %1163, 20
%1165 = and i32 %1164, 2047
%1166 = select i1 %1160, i32 -1083, i32 -1023
%1167 = add nsw i32 %1165, %1166
%1168 = and i64 %1161, 4503599627370495
%1169 = or i64 %1168, 4602678819172646912
%1170 = bitcast i64 %1169 to double
%1171 = ashr i32 %1163, 13
%1172 = lshr i32 %1171, 1
%1173 = and i32 %1172, 63
%1174 = or i32 %1173, 64
%1175 = and i32 %1171, 1
%1176 = add nuw nsw i32 %1174, %1175
%1177 = add nsw i32 %1176, -64
%1178 = sext i32 %1177 to i64
%1179 = getelementptr inbounds [65 x <2 x double>], [65 x <2 x double>] addrspace(2)* @LN_TBL, i64 0, i64 %1178
%1180 = load <2 x double>, <2 x double> addrspace(2)* %1179, align 16, !tbaa !7
%1181 = extractelement <2 x double> %1180, i32 0
%1182 = extractelement <2 x double> %1180, i32 1
%1183 = sitofp i32 %1176 to double
%1184 = fmul double %1183, 7.812500e-03
%1185 = fsub double %1170, %1184
%1186 = tail call double @llvm.fma.f64(double %1185, double 5.000000e-01, double %1184) #6
%1187 = fdiv double %1185, %1186
%1188 = fmul double %1187, %1187
%1189 = tail call double @llvm.fma.f64(double %1188, double 0x3F6249423BD94741, double 0x3F89999999865EDE) #6
%1190 = tail call double @llvm.fma.f64(double %1188, double %1189, double 0x3FB5555555555557) #6
%1191 = fmul double %1188, %1190
%1192 = tail call double @llvm.fma.f64(double %1187, double %1191, double %1187) #6
%1193 = fadd double %1182, %1192
%1194 = sitofp i32 %1167 to double
%1195 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1181, double %1194) #6
%1196 = fmul double %1193, 0x3ECB295C17F0BBBE
%1197 = tail call double @llvm.fma.f64(double 0x3ECB295C17F0BBBE, double %1181, double %1196) #6
%1198 = tail call double @llvm.fma.f64(double 0x3FF7154400000000, double %1193, double %1197) #6
%1199 = fadd double %1195, %1198
%1200 = select i1 %1133, double %1154, double %1199
%1201 = tail call double @llvm.fabs.f64(double %1130) #3
%1202 = fcmp oeq double %1201, 0x7FF0000000000000
%1203 = fcmp uno double %1130, 0.000000e+00
%1204 = fcmp olt double %1130, 0.000000e+00
%1205 = or i1 %1203, %1204
%1206 = fcmp oeq double %1130, 0.000000e+00
%1207 = fmul double %1200, 0x3FE62E42FEFA39EF
%1208 = select i1 %1202, double 0x7FF0000000000000, double %1207
%1209 = select i1 %1205, double 0x7FF8000000000000, double %1208
%1210 = select i1 %1206, double 0xFFF0000000000000, double %1209
%1211 = insertelement <4 x double> %1129, double %1210, i32 1
%1212 = shufflevector <4 x double> %1047, <4 x double> %1211, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%1213 = fsub <4 x double> %1212, %549
%1214 = fdiv <4 x double> %1213, %21
%1215 = tail call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %543, <4 x double> %1214, <4 x double> %130)
%1216 = add nuw nsw i32 %129, 1
%1217 = icmp eq i32 %1216, %1
br i1 %1217, label %52, label %1218
; <label>:1218: ; preds = %519
%1219 = load <4 x i32>, <4 x i32>* %9, align 16, !tbaa !7
br label %127
}
; Function Attrs: nounwind readnone
declare <4 x double> @llvm.fmuladd.v4f64(<4 x double>, <4 x double>, <4 x double>) #3
; Function Attrs: nounwind readnone
declare i32 @llvm.amdgcn.workgroup.id.x() #3
; Function Attrs: nounwind readnone
declare i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #3
; Function Attrs: nounwind readnone
declare i32 @llvm.amdgcn.workitem.id.x() #3
; Function Attrs: nounwind readnone
declare i32 @llvm.amdgcn.workgroup.id.y() #3
; Function Attrs: nounwind readnone
declare i32 @llvm.amdgcn.workitem.id.y() #3
; Function Attrs: nounwind readnone
declare double @llvm.amdgcn.ldexp.f64(double, i32) #3
; Function Attrs: nounwind readnone
declare double @llvm.amdgcn.rsq.f64(double) #3
; Function Attrs: nounwind readnone
declare double @llvm.fma.f64(double, double, double) #3
; Function Attrs: nounwind readnone
declare double @llvm.fabs.f64(double) #3
; Function Attrs: nounwind readnone
declare double @llvm.trunc.f64(double) #3
; Function Attrs: nounwind readnone
declare double @llvm.floor.f64(double) #3
; Function Attrs: nounwind readnone
declare double @fmin(double, double) #4
attributes #0 = { norecurse nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="kaveri" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
attributes #2 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="kaveri" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { nounwind readnone }
attributes #4 = { nounwind readnone "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="kaveri" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { nounwind }
attributes #6 = { nobuiltin nounwind }
attributes #7 = { nobuiltin nounwind readnone }
!opencl.kernels = !{!0}
!llvm.ident = !{!6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6, !6}
!0 = !{void (%struct._MonteCalroAttrib*, i32, i32, <4 x i32> addrspace(1)*, <4 x double> addrspace(1)*, <4 x double> addrspace(1)*)* @calPriceVega, !1, !2, !3, !4, !5}
!1 = !{!"kernel_arg_addr_space", i32 0, i32 0, i32 0, i32 1, i32 1, i32 1}
!2 = !{!"kernel_arg_access_qual", !"none", !"none", !"none", !"none", !"none", !"none"}
!3 = !{!"kernel_arg_type", !"MonteCarloAttrib", !"int", !"int", !"uint4*", !"double4*", !"double4*"}
!4 = !{!"kernel_arg_base_type", !"struct _MonteCalroAttrib", !"int", !"int", !"uint __attribute__((ext_vector_type(4)))*", !"double __attribute__((ext_vector_type(4)))*", !"double __attribute__((ext_vector_type(4)))*"}
!5 = !{!"kernel_arg_type_qual", !"", !"", !"", !"", !"", !""}
!6 = !{!"clang version 3.9.0 "}
!7 = !{!8, !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!11, !8, i64 0}
!11 = !{!"_MonteCalroAttrib", !8, i64 0, !8, i64 32, !8, i64 64, !8, i64 96, !8, i64 128, !8, i64 160, !8, i64 192}
!12 = !{!11, !8, i64 32}
!13 = !{!11, !8, i64 64}
!14 = !{!11, !8, i64 96}
!15 = !{!11, !8, i64 128}
!16 = !{!11, !8, i64 160}
!17 = !{!11, !8, i64 192}
!18 = !{}
!19 = !{i32 0, i32 2048}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment