149 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O1 -mcpu=atom -mtriple=i686-linux | FileCheck %s3 4declare void @external_function(...)5 6define i32 @test_return_val(i32 %a) nounwind {7; CHECK-LABEL: test_return_val:8; CHECK: # %bb.0:9; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax10; CHECK-NEXT: nop11; CHECK-NEXT: nop12; CHECK-NEXT: nop13; CHECK-NEXT: nop14; CHECK-NEXT: nop15; CHECK-NEXT: nop16; CHECK-NEXT: retl17 ret i32 %a18}19 20define i32 @test_optsize(i32 %a) nounwind optsize {21; CHECK-LABEL: test_optsize:22; CHECK: # %bb.0:23; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax24; CHECK-NEXT: retl25 ret i32 %a26}27 28define i32 @test_minsize(i32 %a) nounwind minsize {29; CHECK-LABEL: test_minsize:30; CHECK: # %bb.0:31; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax32; CHECK-NEXT: retl33 ret i32 %a34}35 36define i32 @test_pgso(i32 %a) nounwind !prof !14 {37; CHECK-LABEL: test_pgso:38; CHECK: # %bb.0:39; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax40; CHECK-NEXT: retl41 ret i32 %a42}43 44define i32 @test_add(i32 %a, i32 %b) nounwind {45; CHECK-LABEL: test_add:46; CHECK: # %bb.0:47; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax48; CHECK-NEXT: addl {{[0-9]+}}(%esp), %eax49; CHECK-NEXT: nop50; CHECK-NEXT: nop51; CHECK-NEXT: nop52; CHECK-NEXT: nop53; CHECK-NEXT: retl54 %result = add i32 %a, %b55 ret i32 %result56}57 58define i32 @test_multiple_ret(i32 %a, i32 %b, i1 %c) nounwind {59; CHECK-LABEL: test_multiple_ret:60; CHECK: # %bb.0:61; CHECK-NEXT: testb $1, {{[0-9]+}}(%esp)62; CHECK-NEXT: je .LBB5_263; CHECK-NEXT: # %bb.1: # %bb164; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax65; CHECK-NEXT: nop66; CHECK-NEXT: nop67; CHECK-NEXT: retl68; CHECK-NEXT: .LBB5_2: # %bb269; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax70; CHECK-NEXT: nop71; CHECK-NEXT: nop72; CHECK-NEXT: retl73 74 75 76 br i1 %c, label %bb1, label %bb277 78bb1:79 ret i32 %a80 81bb2:82 ret i32 %b83}84 85define void @test_call_others(i32 %x) nounwind {86; CHECK-LABEL: test_call_others:87; CHECK: # %bb.0:88; CHECK-NEXT: cmpl $0, {{[0-9]+}}(%esp)89; CHECK-NEXT: jne external_function@PLT # TAILCALL90; CHECK-NEXT: # %bb.1: # %if.end91; CHECK-NEXT: nop92; CHECK-NEXT: nop93; CHECK-NEXT: nop94; CHECK-NEXT: nop95; CHECK-NEXT: retl96 %tobool = icmp eq i32 %x, 097 br i1 %tobool, label %if.end, label %true.case98 99true.case:100 tail call void @external_function() nounwind101 br label %if.end102 103if.end:104 ret void105 106}107 108define void @test_branch_to_same_bb(i32 %x, i32 %y) nounwind {109; CHECK-LABEL: test_branch_to_same_bb:110; CHECK: # %bb.0:111; CHECK-NEXT: cmpl $0, {{[0-9]+}}(%esp)112; CHECK-NEXT: jle .LBB7_2113; CHECK-NEXT: .p2align 4114; CHECK-NEXT: .LBB7_1: # %while.cond115; CHECK-NEXT: # =>This Inner Loop Header: Depth=1116; CHECK-NEXT: jmp .LBB7_1117; CHECK-NEXT: .LBB7_2: # %while.end118; CHECK-NEXT: nop119; CHECK-NEXT: nop120; CHECK-NEXT: nop121; CHECK-NEXT: nop122; CHECK-NEXT: retl123 %cmp = icmp sgt i32 %x, 0124 br i1 %cmp, label %while.cond, label %while.end125 126while.cond:127 br label %while.cond128 129while.end:130 ret void131}132 133!llvm.module.flags = !{!0}134!0 = !{i32 1, !"ProfileSummary", !1}135!1 = !{!2, !3, !4, !5, !6, !7, !8, !9}136!2 = !{!"ProfileFormat", !"InstrProf"}137!3 = !{!"TotalCount", i64 10000}138!4 = !{!"MaxCount", i64 10}139!5 = !{!"MaxInternalCount", i64 1}140!6 = !{!"MaxFunctionCount", i64 1000}141!7 = !{!"NumCounts", i64 3}142!8 = !{!"NumFunctions", i64 3}143!9 = !{!"DetailedSummary", !10}144!10 = !{!11, !12, !13}145!11 = !{i32 10000, i64 100, i32 1}146!12 = !{i32 999000, i64 100, i32 1}147!13 = !{i32 999999, i64 1, i32 2}148!14 = !{!"function_entry_count", i64 0}149