1; This is a smoke test for floating-point constant pooling. It tests 2; pooling of various float and double constants (including positive 3; and negative NaN) within functions and across functions. Note that 4; in LLVM bitcode, hex constants are used for an FP constant whenever 5; the constant "cannot be represented as a decimal floating point 6; number in a reasonable number of digits". See 7; http://llvm.org/docs/LangRef.html#simple-constants . 8 9; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \ 10; RUN: -i %s --args -O2 --verbose none -allow-externally-defined-symbols \ 11; RUN: | FileCheck %s 12; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \ 13; RUN: -i %s --args -Om1 --verbose none -allow-externally-defined-symbols \ 14; RUN: | FileCheck %s 15 16; RUN: %if --need allow_dump --command %p2i --assemble --disassemble \ 17; RUN: --dis-flags=-s -i %s --args -O2 --verbose none \ 18; RUN: -allow-externally-defined-symbols \ 19; RUN: | %if --need allow_dump --command FileCheck %s 20; RUN: %if --need allow_dump --command %p2i --assemble --disassemble \ 21; RUN: --dis-flags=-s -i %s --args -Om1 --verbose none \ 22; RUN: -allow-externally-defined-symbols \ 23; RUN: | %if --need allow_dump --command FileCheck %s 24 25@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 26@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 27@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8 28@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4 29 30define internal float @FpLookup1(i32 %Arg) { 31entry: 32 switch i32 %Arg, label %return [ 33 i32 0, label %sw.bb 34 i32 1, label %sw.bb1 35 i32 2, label %sw.bb4 36 i32 3, label %sw.bb7 37 i32 -1, label %sw.bb10 38 i32 -2, label %sw.bb14 39 i32 -3, label %sw.bb19 40 i32 10, label %sw.bb24 41 i32 -10, label %sw.bb27 42 i32 100, label %sw.bb30 43 i32 101, label %sw.bb33 44 i32 102, label %sw.bb36 45 i32 103, label %sw.bb39 46 i32 -101, label %sw.bb42 47 i32 -102, label %sw.bb47 48 i32 -103, label %sw.bb52 49 i32 110, label %sw.bb57 50 i32 -110, label %sw.bb60 51 ] 52 53sw.bb: ; preds = %entry 54 %call = call float @Dummy(i32 0) 55 %add = fadd float %call, 1.000000e+00 56 br label %return 57 58sw.bb1: ; preds = %entry 59 %call2 = call float @Dummy(i32 1) 60 %add3 = fadd float %call2, 2.000000e+00 61 br label %return 62 63sw.bb4: ; preds = %entry 64 %call5 = call float @Dummy(i32 2) 65 %add6 = fadd float %call5, 4.000000e+00 66 br label %return 67 68sw.bb7: ; preds = %entry 69 %call8 = call float @Dummy(i32 3) 70 %add9 = fadd float %call8, 8.000000e+00 71 br label %return 72 73sw.bb10: ; preds = %entry 74 %call11 = call float @Dummy(i32 -1) 75 %conv13 = fadd float %call11, 5.000000e-01 76 br label %return 77 78sw.bb14: ; preds = %entry 79 %call15 = call float @Dummy(i32 -2) 80 %conv16 = fpext float %call15 to double 81 %add17 = fadd double %conv16, 0x3FD5555555555555 82 %conv18 = fptrunc double %add17 to float 83 br label %return 84 85sw.bb19: ; preds = %entry 86 %call20 = call float @Dummy(i32 -3) 87 %conv23 = fadd float %call20, 2.500000e-01 88 br label %return 89 90sw.bb24: ; preds = %entry 91 %call25 = call float @Dummy(i32 10) 92 %add26 = fadd float %call25, 0x7FF8000000000000 93 br label %return 94 95sw.bb27: ; preds = %entry 96 %call28 = call float @Dummy(i32 -10) 97 %add29 = fadd float %call28, 0xFFF8000000000000 98 br label %return 99 100sw.bb30: ; preds = %entry 101 %call31 = call float @Dummy(i32 100) 102 %add32 = fadd float %call31, 1.000000e+00 103 br label %return 104 105sw.bb33: ; preds = %entry 106 %call34 = call float @Dummy(i32 101) 107 %add35 = fadd float %call34, 2.000000e+00 108 br label %return 109 110sw.bb36: ; preds = %entry 111 %call37 = call float @Dummy(i32 102) 112 %add38 = fadd float %call37, 4.000000e+00 113 br label %return 114 115sw.bb39: ; preds = %entry 116 %call40 = call float @Dummy(i32 103) 117 %add41 = fadd float %call40, 8.000000e+00 118 br label %return 119 120sw.bb42: ; preds = %entry 121 %call43 = call float @Dummy(i32 -101) 122 %conv46 = fadd float %call43, 5.000000e-01 123 br label %return 124 125sw.bb47: ; preds = %entry 126 %call48 = call float @Dummy(i32 -102) 127 %conv49 = fpext float %call48 to double 128 %add50 = fadd double %conv49, 0x3FD5555555555555 129 %conv51 = fptrunc double %add50 to float 130 br label %return 131 132sw.bb52: ; preds = %entry 133 %call53 = call float @Dummy(i32 -103) 134 %conv56 = fadd float %call53, 2.500000e-01 135 br label %return 136 137sw.bb57: ; preds = %entry 138 %call58 = call float @Dummy(i32 110) 139 %add59 = fadd float %call58, 0x7FF8000000000000 140 br label %return 141 142sw.bb60: ; preds = %entry 143 %call61 = call float @Dummy(i32 -110) 144 %add62 = fadd float %call61, 0xFFF8000000000000 145 br label %return 146 147return: ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb 148 %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ] 149 ret float %retval.0 150} 151 152declare float @Dummy(i32) 153 154define internal float @FpLookup2(i32 %Arg) { 155entry: 156 switch i32 %Arg, label %return [ 157 i32 0, label %sw.bb 158 i32 1, label %sw.bb1 159 i32 2, label %sw.bb4 160 i32 3, label %sw.bb7 161 i32 -1, label %sw.bb10 162 i32 -2, label %sw.bb14 163 i32 -3, label %sw.bb19 164 i32 10, label %sw.bb24 165 i32 -10, label %sw.bb27 166 i32 100, label %sw.bb30 167 i32 101, label %sw.bb33 168 i32 102, label %sw.bb36 169 i32 103, label %sw.bb39 170 i32 -101, label %sw.bb42 171 i32 -102, label %sw.bb47 172 i32 -103, label %sw.bb52 173 i32 110, label %sw.bb57 174 i32 -110, label %sw.bb60 175 ] 176 177sw.bb: ; preds = %entry 178 %call = call float @Dummy(i32 0) 179 %add = fadd float %call, 1.000000e+00 180 br label %return 181 182sw.bb1: ; preds = %entry 183 %call2 = call float @Dummy(i32 1) 184 %add3 = fadd float %call2, 2.000000e+00 185 br label %return 186 187sw.bb4: ; preds = %entry 188 %call5 = call float @Dummy(i32 2) 189 %add6 = fadd float %call5, 4.000000e+00 190 br label %return 191 192sw.bb7: ; preds = %entry 193 %call8 = call float @Dummy(i32 3) 194 %add9 = fadd float %call8, 8.000000e+00 195 br label %return 196 197sw.bb10: ; preds = %entry 198 %call11 = call float @Dummy(i32 -1) 199 %conv13 = fadd float %call11, 5.000000e-01 200 br label %return 201 202sw.bb14: ; preds = %entry 203 %call15 = call float @Dummy(i32 -2) 204 %conv16 = fpext float %call15 to double 205 %add17 = fadd double %conv16, 0x3FD5555555555555 206 %conv18 = fptrunc double %add17 to float 207 br label %return 208 209sw.bb19: ; preds = %entry 210 %call20 = call float @Dummy(i32 -3) 211 %conv23 = fadd float %call20, 2.500000e-01 212 br label %return 213 214sw.bb24: ; preds = %entry 215 %call25 = call float @Dummy(i32 10) 216 %add26 = fadd float %call25, 0x7FF8000000000000 217 br label %return 218 219sw.bb27: ; preds = %entry 220 %call28 = call float @Dummy(i32 -10) 221 %add29 = fadd float %call28, 0xFFF8000000000000 222 br label %return 223 224sw.bb30: ; preds = %entry 225 %call31 = call float @Dummy(i32 100) 226 %add32 = fadd float %call31, 1.000000e+00 227 br label %return 228 229sw.bb33: ; preds = %entry 230 %call34 = call float @Dummy(i32 101) 231 %add35 = fadd float %call34, 2.000000e+00 232 br label %return 233 234sw.bb36: ; preds = %entry 235 %call37 = call float @Dummy(i32 102) 236 %add38 = fadd float %call37, 4.000000e+00 237 br label %return 238 239sw.bb39: ; preds = %entry 240 %call40 = call float @Dummy(i32 103) 241 %add41 = fadd float %call40, 8.000000e+00 242 br label %return 243 244sw.bb42: ; preds = %entry 245 %call43 = call float @Dummy(i32 -101) 246 %conv46 = fadd float %call43, 5.000000e-01 247 br label %return 248 249sw.bb47: ; preds = %entry 250 %call48 = call float @Dummy(i32 -102) 251 %conv49 = fpext float %call48 to double 252 %add50 = fadd double %conv49, 0x3FD5555555555555 253 %conv51 = fptrunc double %add50 to float 254 br label %return 255 256sw.bb52: ; preds = %entry 257 %call53 = call float @Dummy(i32 -103) 258 %conv56 = fadd float %call53, 2.500000e-01 259 br label %return 260 261sw.bb57: ; preds = %entry 262 %call58 = call float @Dummy(i32 110) 263 %add59 = fadd float %call58, 0x7FF8000000000000 264 br label %return 265 266sw.bb60: ; preds = %entry 267 %call61 = call float @Dummy(i32 -110) 268 %add62 = fadd float %call61, 0xFFF8000000000000 269 br label %return 270 271return: ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb 272 %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ] 273 ret float %retval.0 274} 275 276define internal double @FpLookup3(i32 %Arg) { 277entry: 278 switch i32 %Arg, label %return [ 279 i32 0, label %sw.bb 280 i32 1, label %sw.bb1 281 i32 2, label %sw.bb5 282 i32 3, label %sw.bb9 283 i32 -1, label %sw.bb13 284 i32 -2, label %sw.bb17 285 i32 -3, label %sw.bb21 286 i32 10, label %sw.bb25 287 i32 -10, label %sw.bb29 288 i32 100, label %sw.bb33 289 i32 101, label %sw.bb37 290 i32 102, label %sw.bb41 291 i32 103, label %sw.bb45 292 i32 -101, label %sw.bb49 293 i32 -102, label %sw.bb53 294 i32 -103, label %sw.bb57 295 i32 110, label %sw.bb61 296 i32 -110, label %sw.bb65 297 ] 298 299sw.bb: ; preds = %entry 300 %call = call float @Dummy(i32 0) 301 %add = fadd float %call, 1.000000e+00 302 %conv = fpext float %add to double 303 br label %return 304 305sw.bb1: ; preds = %entry 306 %call2 = call float @Dummy(i32 1) 307 %add3 = fadd float %call2, 2.000000e+00 308 %conv4 = fpext float %add3 to double 309 br label %return 310 311sw.bb5: ; preds = %entry 312 %call6 = call float @Dummy(i32 2) 313 %add7 = fadd float %call6, 4.000000e+00 314 %conv8 = fpext float %add7 to double 315 br label %return 316 317sw.bb9: ; preds = %entry 318 %call10 = call float @Dummy(i32 3) 319 %add11 = fadd float %call10, 8.000000e+00 320 %conv12 = fpext float %add11 to double 321 br label %return 322 323sw.bb13: ; preds = %entry 324 %call14 = call float @Dummy(i32 -1) 325 %conv15 = fpext float %call14 to double 326 %add16 = fadd double %conv15, 5.000000e-01 327 br label %return 328 329sw.bb17: ; preds = %entry 330 %call18 = call float @Dummy(i32 -2) 331 %conv19 = fpext float %call18 to double 332 %add20 = fadd double %conv19, 0x3FD5555555555555 333 br label %return 334 335sw.bb21: ; preds = %entry 336 %call22 = call float @Dummy(i32 -3) 337 %conv23 = fpext float %call22 to double 338 %add24 = fadd double %conv23, 2.500000e-01 339 br label %return 340 341sw.bb25: ; preds = %entry 342 %call26 = call float @Dummy(i32 10) 343 %conv27 = fpext float %call26 to double 344 %add28 = fadd double %conv27, 0x7FF8000000000000 345 br label %return 346 347sw.bb29: ; preds = %entry 348 %call30 = call float @Dummy(i32 -10) 349 %conv31 = fpext float %call30 to double 350 %add32 = fadd double %conv31, 0xFFF8000000000000 351 br label %return 352 353sw.bb33: ; preds = %entry 354 %call34 = call float @Dummy(i32 100) 355 %add35 = fadd float %call34, 1.000000e+00 356 %conv36 = fpext float %add35 to double 357 br label %return 358 359sw.bb37: ; preds = %entry 360 %call38 = call float @Dummy(i32 101) 361 %add39 = fadd float %call38, 2.000000e+00 362 %conv40 = fpext float %add39 to double 363 br label %return 364 365sw.bb41: ; preds = %entry 366 %call42 = call float @Dummy(i32 102) 367 %add43 = fadd float %call42, 4.000000e+00 368 %conv44 = fpext float %add43 to double 369 br label %return 370 371sw.bb45: ; preds = %entry 372 %call46 = call float @Dummy(i32 103) 373 %add47 = fadd float %call46, 8.000000e+00 374 %conv48 = fpext float %add47 to double 375 br label %return 376 377sw.bb49: ; preds = %entry 378 %call50 = call float @Dummy(i32 -101) 379 %conv51 = fpext float %call50 to double 380 %add52 = fadd double %conv51, 5.000000e-01 381 br label %return 382 383sw.bb53: ; preds = %entry 384 %call54 = call float @Dummy(i32 -102) 385 %conv55 = fpext float %call54 to double 386 %add56 = fadd double %conv55, 0x3FD5555555555555 387 br label %return 388 389sw.bb57: ; preds = %entry 390 %call58 = call float @Dummy(i32 -103) 391 %conv59 = fpext float %call58 to double 392 %add60 = fadd double %conv59, 2.500000e-01 393 br label %return 394 395sw.bb61: ; preds = %entry 396 %call62 = call float @Dummy(i32 110) 397 %conv63 = fpext float %call62 to double 398 %add64 = fadd double %conv63, 0x7FF8000000000000 399 br label %return 400 401sw.bb65: ; preds = %entry 402 %call66 = call float @Dummy(i32 -110) 403 %conv67 = fpext float %call66 to double 404 %add68 = fadd double %conv67, 0xFFF8000000000000 405 br label %return 406 407return: ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb 408 %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ] 409 ret double %retval.0 410} 411 412define internal double @FpLookup4(i32 %Arg) { 413entry: 414 switch i32 %Arg, label %return [ 415 i32 0, label %sw.bb 416 i32 1, label %sw.bb1 417 i32 2, label %sw.bb5 418 i32 3, label %sw.bb9 419 i32 -1, label %sw.bb13 420 i32 -2, label %sw.bb17 421 i32 -3, label %sw.bb21 422 i32 10, label %sw.bb25 423 i32 -10, label %sw.bb29 424 i32 100, label %sw.bb33 425 i32 101, label %sw.bb37 426 i32 102, label %sw.bb41 427 i32 103, label %sw.bb45 428 i32 -101, label %sw.bb49 429 i32 -102, label %sw.bb53 430 i32 -103, label %sw.bb57 431 i32 110, label %sw.bb61 432 i32 -110, label %sw.bb65 433 ] 434 435sw.bb: ; preds = %entry 436 %call = call float @Dummy(i32 0) 437 %add = fadd float %call, 1.000000e+00 438 %conv = fpext float %add to double 439 br label %return 440 441sw.bb1: ; preds = %entry 442 %call2 = call float @Dummy(i32 1) 443 %add3 = fadd float %call2, 2.000000e+00 444 %conv4 = fpext float %add3 to double 445 br label %return 446 447sw.bb5: ; preds = %entry 448 %call6 = call float @Dummy(i32 2) 449 %add7 = fadd float %call6, 4.000000e+00 450 %conv8 = fpext float %add7 to double 451 br label %return 452 453sw.bb9: ; preds = %entry 454 %call10 = call float @Dummy(i32 3) 455 %add11 = fadd float %call10, 8.000000e+00 456 %conv12 = fpext float %add11 to double 457 br label %return 458 459sw.bb13: ; preds = %entry 460 %call14 = call float @Dummy(i32 -1) 461 %conv15 = fpext float %call14 to double 462 %add16 = fadd double %conv15, 5.000000e-01 463 br label %return 464 465sw.bb17: ; preds = %entry 466 %call18 = call float @Dummy(i32 -2) 467 %conv19 = fpext float %call18 to double 468 %add20 = fadd double %conv19, 0x3FD5555555555555 469 br label %return 470 471sw.bb21: ; preds = %entry 472 %call22 = call float @Dummy(i32 -3) 473 %conv23 = fpext float %call22 to double 474 %add24 = fadd double %conv23, 2.500000e-01 475 br label %return 476 477sw.bb25: ; preds = %entry 478 %call26 = call float @Dummy(i32 10) 479 %conv27 = fpext float %call26 to double 480 %add28 = fadd double %conv27, 0x7FF8000000000000 481 br label %return 482 483sw.bb29: ; preds = %entry 484 %call30 = call float @Dummy(i32 -10) 485 %conv31 = fpext float %call30 to double 486 %add32 = fadd double %conv31, 0xFFF8000000000000 487 br label %return 488 489sw.bb33: ; preds = %entry 490 %call34 = call float @Dummy(i32 100) 491 %add35 = fadd float %call34, 1.000000e+00 492 %conv36 = fpext float %add35 to double 493 br label %return 494 495sw.bb37: ; preds = %entry 496 %call38 = call float @Dummy(i32 101) 497 %add39 = fadd float %call38, 2.000000e+00 498 %conv40 = fpext float %add39 to double 499 br label %return 500 501sw.bb41: ; preds = %entry 502 %call42 = call float @Dummy(i32 102) 503 %add43 = fadd float %call42, 4.000000e+00 504 %conv44 = fpext float %add43 to double 505 br label %return 506 507sw.bb45: ; preds = %entry 508 %call46 = call float @Dummy(i32 103) 509 %add47 = fadd float %call46, 8.000000e+00 510 %conv48 = fpext float %add47 to double 511 br label %return 512 513sw.bb49: ; preds = %entry 514 %call50 = call float @Dummy(i32 -101) 515 %conv51 = fpext float %call50 to double 516 %add52 = fadd double %conv51, 5.000000e-01 517 br label %return 518 519sw.bb53: ; preds = %entry 520 %call54 = call float @Dummy(i32 -102) 521 %conv55 = fpext float %call54 to double 522 %add56 = fadd double %conv55, 0x3FD5555555555555 523 br label %return 524 525sw.bb57: ; preds = %entry 526 %call58 = call float @Dummy(i32 -103) 527 %conv59 = fpext float %call58 to double 528 %add60 = fadd double %conv59, 2.500000e-01 529 br label %return 530 531sw.bb61: ; preds = %entry 532 %call62 = call float @Dummy(i32 110) 533 %conv63 = fpext float %call62 to double 534 %add64 = fadd double %conv63, 0x7FF8000000000000 535 br label %return 536 537sw.bb65: ; preds = %entry 538 %call66 = call float @Dummy(i32 -110) 539 %conv67 = fpext float %call66 to double 540 %add68 = fadd double %conv67, 0xFFF8000000000000 541 br label %return 542 543return: ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb 544 %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ] 545 ret double %retval.0 546} 547 548; The FP constant pool entries for each type are dumped in some 549; implementation-dependent order. So for the purposes of lit, we just 550; pick one value for each type, and make sure it appears exactly once. 551 552; Check for float 0.5 553; CHECK-LABEL: .rodata.cst4 554; CHECK: 0000003f 555; CHECK-NOT: 0000003f 556 557; Check for double 0.5 558; CHECK-LABEL: .rodata.cst8 559; CHECK: 00000000 0000e03f 560; CHECK-NOT: 00000000 0000e03f 561; CHECK-LABEL: .text 562