101 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -o - %s | FileCheck %s3 4target triple = "i386-unknown-linux-gnu"5 6@a = external dso_local global i32, align 47@d = external dso_local global ptr, align 48@k = external dso_local global ptr, align 49@j = external dso_local global ptr, align 410@h = external dso_local global i32, align 411@c = external dso_local global i32, align 412@i = external dso_local global i32, align 413@b = external dso_local global i32, align 414@f = external dso_local global i64, align 815@e = external dso_local global i64, align 816@g = external dso_local global i32, align 417 18declare i32 @fn1(i32 returned) optsize readnone19 20declare i32 @main() optsize21 22declare i32 @putchar(i32) nounwind23 24define void @fn2() nounwind optsize {25; CHECK-LABEL: fn2:26; CHECK: # %bb.0: # %entry27; CHECK-NEXT: pushl %ebx28; CHECK-NEXT: subl $8, %esp29; CHECK-NEXT: movl $48, (%esp)30; CHECK-NEXT: calll putchar@PLT31; CHECK-NEXT: movl h, %eax32; CHECK-NEXT: movl c, %ecx33; CHECK-NEXT: movl j, %edx34; CHECK-NEXT: movl (%edx), %edx35; CHECK-NEXT: movl (%edx), %edx36; CHECK-NEXT: xorl %ebx, %ebx37; CHECK-NEXT: cmpl (%edx), %ecx38; CHECK-NEXT: setg %bl39; CHECK-NEXT: xorl %ecx, %ecx40; CHECK-NEXT: cmpl %ebx, i41; CHECK-NEXT: setg %cl42; CHECK-NEXT: movl %ecx, b43; CHECK-NEXT: xorl %edx, %edx44; CHECK-NEXT: cmpl %ecx, %eax45; CHECK-NEXT: setg %dl46; CHECK-NEXT: xorl %edx, a47; CHECK-NEXT: movl d, %eax48; CHECK-NEXT: movl (%eax), %eax49; CHECK-NEXT: andl %eax, e50; CHECK-NEXT: sarl $31, %eax51; CHECK-NEXT: andl %eax, e+452; CHECK-NEXT: decl g53; CHECK-NEXT: addl $1, f54; CHECK-NEXT: adcl $0, f+455; CHECK-NEXT: addl $8, %esp56; CHECK-NEXT: popl %ebx57; CHECK-NEXT: retl58entry:59 %putchar = tail call i32 @putchar(i32 48)60 %0 = load volatile i32, ptr @h, align 461 %1 = load i32, ptr @c, align 4, !tbaa !162 %2 = load ptr, ptr @j, align 463 %3 = load ptr, ptr %2, align 464 %4 = load ptr, ptr %3, align 465 %5 = load i32, ptr %4, align 466 %cmp = icmp sgt i32 %1, %567 %conv = zext i1 %cmp to i3268 %6 = load i32, ptr @i, align 469 %cmp1 = icmp sgt i32 %6, %conv70 %conv2 = zext i1 %cmp1 to i3271 store i32 %conv2, ptr @b, align 472 %cmp3 = icmp sgt i32 %0, %conv273 %conv4 = zext i1 %cmp3 to i3274 %7 = load i32, ptr @a, align 475 %or = xor i32 %7, %conv476 store i32 %or, ptr @a, align 477 %8 = load ptr, ptr @d, align 478 %9 = load i32, ptr %8, align 479 %conv6 = sext i32 %9 to i6480 %10 = load i64, ptr @e, align 881 %and = and i64 %10, %conv682 store i64 %and, ptr @e, align 883 %11 = load i32, ptr @g, align 484 %dec = add nsw i32 %11, -185 store i32 %dec, ptr @g, align 486 %12 = load i64, ptr @f, align 887 %inc = add nsw i64 %12, 188 store i64 %inc, ptr @f, align 889 ret void90}91 92!0 = !{i32 1, !"NumRegisterParameters", i32 0}93!1 = !{!2, !2, i64 0}94!2 = !{!"int", !3, i64 0}95!3 = !{!"omnipotent char", !4, i64 0}96!4 = !{!"Simple C/C++ TBAA"}97!5 = !{!6, !6, i64 0}98!6 = !{!"any pointer", !3, i64 0}99!7 = !{!8, !8, i64 0}100!8 = !{!"long long", !3, i64 0}101