brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 2127ee2 Raw
177 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -O3 -S | FileCheck %s3 4; Compile time conversions of NaNs.5 6target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"7target triple = "i686-apple-darwin8"8 9%struct..0anon = type { float }10%struct..1anon = type { double }11 12@fnan = constant [3 x i32] [ i32 2143831397, i32 2143831396, i32 2143831398 ]13@dnan = constant [3 x i64] [ i64 9223235251041752696, i64 9223235251041752697, i64 9223235250773317239 ], align 814@fsnan = constant [3 x i32] [ i32 2139637093, i32 2139637092, i32 2139637094 ]15@dsnan = constant [3 x i64] [ i64 9220983451228067448, i64 9220983451228067449, i64 9220983450959631991 ], align 816@.str = internal constant [10 x i8] c"%08x%08x\0A\00"17@.str1 = internal constant [6 x i8] c"%08x\0A\00"18 19@var = external global i3220 21; SNAN becomes QNAN on fptrunc:22; 2147228864 = 0x7ffc1cc0 : QNAN23 24define i32 @main() {25; CHECK-LABEL: @main(26; CHECK-NEXT:  entry:27; CHECK-NEXT:    store volatile i32 2147027116, ptr @var, align 428; CHECK-NEXT:    store volatile i32 -1610612736, ptr @var, align 429; CHECK-NEXT:    store volatile i32 2147027116, ptr @var, align 430; CHECK-NEXT:    store volatile i32 -2147483648, ptr @var, align 431; CHECK-NEXT:    store volatile i32 2147027116, ptr @var, align 432; CHECK-NEXT:    store volatile i32 -1073741824, ptr @var, align 433; CHECK-NEXT:    store volatile i32 2147228864, ptr @var, align 434; CHECK-NEXT:    store volatile i32 2147228864, ptr @var, align 435; CHECK-NEXT:    store volatile i32 2147228864, ptr @var, align 436; CHECK-NEXT:    store volatile i32 2147027116, ptr @var, align 437; CHECK-NEXT:    store volatile i32 -1610612736, ptr @var, align 438; CHECK-NEXT:    store volatile i32 2147027116, ptr @var, align 439; CHECK-NEXT:    store volatile i32 -2147483648, ptr @var, align 440; CHECK-NEXT:    store volatile i32 2147027116, ptr @var, align 441; CHECK-NEXT:    store volatile i32 -1073741824, ptr @var, align 442; CHECK-NEXT:    store volatile i32 2147228864, ptr @var, align 443; CHECK-NEXT:    store volatile i32 2147228864, ptr @var, align 444; CHECK-NEXT:    store volatile i32 2147228864, ptr @var, align 445; CHECK-NEXT:    ret i32 undef46;47entry:48  %retval = alloca i32, align 449  %i = alloca i32, align 450  %uf = alloca %struct..0anon, align 451  %ud = alloca %struct..1anon, align 852  %"alloca point" = bitcast i32 0 to i3253  store i32 0, ptr %i, align 454  br label %bb2355 56bb:		; preds = %bb2357  %t = load i32, ptr %i, align 458  %t1 = getelementptr [3 x i32], ptr @fnan, i32 0, i32 %t59  %t2 = load i32, ptr %t1, align 460  store i32 %t2, ptr %uf, align 461  %t6 = load float, ptr %uf, align 462  %t67 = fpext float %t6 to double63  store double %t67, ptr %ud, align 864  %t11 = load i64, ptr %ud, align 865  %t1112 = trunc i64 %t11 to i3266  %t13 = and i32 %t1112, -167  %t16 = load i64, ptr %ud, align 868  %.cast = zext i32 32 to i6469  %t17 = ashr i64 %t16, %.cast70  %t1718 = trunc i64 %t17 to i3271  store volatile i32 %t1718, ptr @var72  store volatile i32 %t13, ptr @var73  %t21 = load i32, ptr %i, align 474  %t22 = add i32 %t21, 175  store i32 %t22, ptr %i, align 476  br label %bb2377 78bb23:		; preds = %bb, %entry79  %t24 = load i32, ptr %i, align 480  %t25 = icmp sle i32 %t24, 281  %t2526 = zext i1 %t25 to i882  %toBool = icmp ne i8 %t2526, 083  br i1 %toBool, label %bb, label %bb2784 85bb27:		; preds = %bb2386  store i32 0, ptr %i, align 487  br label %bb4688 89bb28:		; preds = %bb4690  %t29 = load i32, ptr %i, align 491  %t30 = getelementptr [3 x i64], ptr @dnan, i32 0, i32 %t2992  %t31 = load i64, ptr %t30, align 893  store i64 %t31, ptr %ud, align 894  %t36 = load double, ptr %ud, align 895  %t3637 = fptrunc double %t36 to float96  store float %t3637, ptr %uf, align 497  %t41 = load i32, ptr %uf, align 498  store volatile i32 %t41, ptr @var99  %t44 = load i32, ptr %i, align 4100  %t45 = add i32 %t44, 1101  store i32 %t45, ptr %i, align 4102  br label %bb46103 104bb46:		; preds = %bb28, %bb27105  %t47 = load i32, ptr %i, align 4106  %t48 = icmp sle i32 %t47, 2107  %t4849 = zext i1 %t48 to i8108  %toBool50 = icmp ne i8 %t4849, 0109  br i1 %toBool50, label %bb28, label %bb51110 111bb51:		; preds = %bb46112  store i32 0, ptr %i, align 4113  br label %bb78114 115bb52:		; preds = %bb78116  %t53 = load i32, ptr %i, align 4117  %t54 = getelementptr [3 x i32], ptr @fsnan, i32 0, i32 %t53118  %t55 = load i32, ptr %t54, align 4119  store i32 %t55, ptr %uf, align 4120  %t59 = load float, ptr %uf, align 4121  %t5960 = fpext float %t59 to double122  store double %t5960, ptr %ud, align 8123  %t64 = load i64, ptr %ud, align 8124  %t6465 = trunc i64 %t64 to i32125  %t66 = and i32 %t6465, -1126  %t70 = load i64, ptr %ud, align 8127  %.cast71 = zext i32 32 to i64128  %t72 = ashr i64 %t70, %.cast71129  %t7273 = trunc i64 %t72 to i32130  store volatile i32 %t7273, ptr @var131  store volatile i32 %t66, ptr @var132  %t76 = load i32, ptr %i, align 4133  %t77 = add i32 %t76, 1134  store i32 %t77, ptr %i, align 4135  br label %bb78136 137bb78:		; preds = %bb52, %bb51138  %t79 = load i32, ptr %i, align 4139  %t80 = icmp sle i32 %t79, 2140  %t8081 = zext i1 %t80 to i8141  %toBool82 = icmp ne i8 %t8081, 0142  br i1 %toBool82, label %bb52, label %bb83143 144bb83:		; preds = %bb78145  store i32 0, ptr %i, align 4146  br label %bb101147 148bb84:		; preds = %bb101149  %t85 = load i32, ptr %i, align 4150  %t86 = getelementptr [3 x i64], ptr @dsnan, i32 0, i32 %t85151  %t87 = load i64, ptr %t86, align 8152  store i64 %t87, ptr %ud, align 8153  %t91 = load double, ptr %ud, align 8154  %t9192 = fptrunc double %t91 to float155  store float %t9192, ptr %uf, align 4156  %t96 = load i32, ptr %uf, align 4157  store volatile i32 %t96, ptr @var158  %t99 = load i32, ptr %i, align 4159  %t100 = add i32 %t99, 1160  store i32 %t100, ptr %i, align 4161  br label %bb101162 163bb101:		; preds = %bb84, %bb83164  %t102 = load i32, ptr %i, align 4165  %t103 = icmp sle i32 %t102, 2166  %t103104 = zext i1 %t103 to i8167  %toBool105 = icmp ne i8 %t103104, 0168  br i1 %toBool105, label %bb84, label %bb106169 170bb106:		; preds = %bb101171  br label %return172 173return:		; preds = %bb106174  %retval107 = load i32, ptr %retval175  ret i32 %retval107176}177