brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 862f60c Raw
221 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s3define ptr @large_loop_switch(ptr %p) {4; CHECK-LABEL: large_loop_switch:5; CHECK:       # %bb.0: # %entry6; CHECK-NEXT:    pushq %rbx7; CHECK-NEXT:    .cfi_def_cfa_offset 168; CHECK-NEXT:    .cfi_offset %rbx, -169; CHECK-NEXT:    movq %rdi, %rax10; CHECK-NEXT:    movl $6, %ebx11; CHECK-NEXT:    movl %ebx, %ecx12; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)13; CHECK-NEXT:  .LBB0_1: # %for.cond.cleanup14; CHECK-NEXT:    movl $530, %edi # imm = 0x21215; CHECK-NEXT:    movq %rax, %rsi16; CHECK-NEXT:    popq %rbx17; CHECK-NEXT:    .cfi_def_cfa_offset 818; CHECK-NEXT:    jmp ccc@PLT # TAILCALL19; CHECK-NEXT:    .p2align 420; CHECK-NEXT:  .LBB0_2: # %sw.bb121; CHECK-NEXT:    # =>This Inner Loop Header: Depth=122; CHECK-NEXT:    .cfi_def_cfa_offset 1623; CHECK-NEXT:    movl $531, %edi # imm = 0x21324; CHECK-NEXT:    movq %rax, %rsi25; CHECK-NEXT:    callq ccc@PLT26; CHECK-NEXT:    decl %ebx27; CHECK-NEXT:    movl %ebx, %ecx28; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)29; CHECK-NEXT:    .p2align 430; CHECK-NEXT:  .LBB0_3: # %sw.bb331; CHECK-NEXT:    # =>This Inner Loop Header: Depth=132; CHECK-NEXT:    movl $532, %edi # imm = 0x21433; CHECK-NEXT:    movq %rax, %rsi34; CHECK-NEXT:    callq bbb@PLT35; CHECK-NEXT:    decl %ebx36; CHECK-NEXT:    movl %ebx, %ecx37; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)38; CHECK-NEXT:    .p2align 439; CHECK-NEXT:  .LBB0_4: # %sw.bb540; CHECK-NEXT:    # =>This Inner Loop Header: Depth=141; CHECK-NEXT:    movl $533, %edi # imm = 0x21542; CHECK-NEXT:    movq %rax, %rsi43; CHECK-NEXT:    callq bbb@PLT44; CHECK-NEXT:    decl %ebx45; CHECK-NEXT:    movl %ebx, %ecx46; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)47; CHECK-NEXT:    .p2align 448; CHECK-NEXT:  .LBB0_5: # %sw.bb749; CHECK-NEXT:    # =>This Inner Loop Header: Depth=150; CHECK-NEXT:    movl $535, %edi # imm = 0x21751; CHECK-NEXT:    movq %rax, %rsi52; CHECK-NEXT:    callq bbb@PLT53; CHECK-NEXT:    decl %ebx54; CHECK-NEXT:    movl %ebx, %ecx55; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)56; CHECK-NEXT:    .p2align 457; CHECK-NEXT:  .LBB0_6: # %sw.bb958; CHECK-NEXT:    # =>This Inner Loop Header: Depth=159; CHECK-NEXT:    movl $536, %edi # imm = 0x21860; CHECK-NEXT:    movq %rax, %rsi61; CHECK-NEXT:    callq ccc@PLT62; CHECK-NEXT:    decl %ebx63; CHECK-NEXT:    movl %ebx, %ecx64; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)65; CHECK-NEXT:    .p2align 466; CHECK-NEXT:  .LBB0_7: # %sw.bb1167; CHECK-NEXT:    # =>This Inner Loop Header: Depth=168; CHECK-NEXT:    movl $658, %edi # imm = 0x29269; CHECK-NEXT:    movq %rax, %rsi70; CHECK-NEXT:    callq bbb@PLT71; CHECK-NEXT:    decl %ebx72; CHECK-NEXT:    movl %ebx, %ecx73; CHECK-NEXT:    jmpq *.LJTI0_0(,%rcx,8)74entry:75  br label %for.body76 77for.cond.cleanup:                                 ; preds = %for.body78  %call = tail call ptr @ccc(i32 signext 530, ptr %p.addr.03006)79  ret ptr %call80 81for.body:                                         ; preds = %for.inc, %entry82  %i.03007 = phi i32 [ 6, %entry ], [ %dec, %for.inc ]83  %p.addr.03006 = phi ptr [ %p, %entry ], [ %p.addr.1, %for.inc ]84  switch i32 %i.03007, label %for.body.unreachabledefault [85    i32 0, label %for.cond.cleanup86    i32 1, label %sw.bb187    i32 2, label %sw.bb388    i32 3, label %sw.bb589    i32 4, label %sw.bb790    i32 5, label %sw.bb991    i32 6, label %sw.bb1192 ]93 94sw.bb1:                                           ; preds = %for.body95  %call2 = tail call ptr @ccc(i32 signext 531, ptr %p.addr.03006)96  br label %for.inc97 98sw.bb3:                                           ; preds = %for.body99  %call4 = tail call ptr @bbb(i32 signext 532, ptr %p.addr.03006)100  br label %for.inc101 102sw.bb5:                                           ; preds = %for.body103  %call6 = tail call ptr @bbb(i32 signext 533, ptr %p.addr.03006)104  br label %for.inc105 106sw.bb7:                                           ; preds = %for.body107  %call8 = tail call ptr @bbb(i32 signext 535, ptr %p.addr.03006)108  br label %for.inc109 110sw.bb9:                                           ; preds = %for.body111  %call10 = tail call ptr @ccc(i32 signext 536, ptr %p.addr.03006)112  br label %for.inc113 114sw.bb11:                                          ; preds = %for.body115  %call12 = tail call ptr @bbb(i32 signext 658, ptr %p.addr.03006)116  br label %for.inc117 118for.body.unreachabledefault:                      ; preds = %for.body119  unreachable120 121for.inc:                                          ; preds = %sw.bb1, %sw.bb3, %sw.bb5, %sw.bb7, %sw.bb9, %sw.bb11122 %p.addr.1 = phi ptr [ %call12, %sw.bb11 ], [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], [ %call6, %sw.bb5 ], [ %call4, %sw.bb3 ], [ %call2, %sw.bb1 ]123  %dec = add nsw i32 %i.03007, -1124  br label %for.body125}126 127declare ptr @bbb(i32 signext, ptr)128declare ptr @ccc(i32 signext, ptr)129 130 131define i32 @interp_switch(ptr nocapture readonly %0, i32 %1) {132; CHECK-LABEL: interp_switch:133; CHECK:       # %bb.0:134; CHECK-NEXT:    movl %esi, %eax135; CHECK-NEXT:    jmp .LBB1_1136; CHECK-NEXT:  .LBB1_7: # in Loop: Header=BB1_1 Depth=1137; CHECK-NEXT:    addl $7, %eax138; CHECK-NEXT:    incq %rdi139; CHECK-NEXT:    .p2align 4140; CHECK-NEXT:  .LBB1_1: # =>This Inner Loop Header: Depth=1141; CHECK-NEXT:    movzbl (%rdi), %ecx142; CHECK-NEXT:    decl %ecx143; CHECK-NEXT:    cmpl $5, %ecx144; CHECK-NEXT:    ja .LBB1_9145; CHECK-NEXT:  # %bb.2: # in Loop: Header=BB1_1 Depth=1146; CHECK-NEXT:    jmpq *.LJTI1_0(,%rcx,8)147; CHECK-NEXT:  .LBB1_3: # in Loop: Header=BB1_1 Depth=1148; CHECK-NEXT:    incl %eax149; CHECK-NEXT:    incq %rdi150; CHECK-NEXT:    jmp .LBB1_1151; CHECK-NEXT:  .LBB1_5: # in Loop: Header=BB1_1 Depth=1152; CHECK-NEXT:    addl %eax, %eax153; CHECK-NEXT:    incq %rdi154; CHECK-NEXT:    jmp .LBB1_1155; CHECK-NEXT:  .LBB1_6: # in Loop: Header=BB1_1 Depth=1156; CHECK-NEXT:    movl %eax, %ecx157; CHECK-NEXT:    shrl $31, %ecx158; CHECK-NEXT:    addl %eax, %ecx159; CHECK-NEXT:    sarl %ecx160; CHECK-NEXT:    incq %rdi161; CHECK-NEXT:    movl %ecx, %eax162; CHECK-NEXT:    jmp .LBB1_1163; CHECK-NEXT:  .LBB1_4: # in Loop: Header=BB1_1 Depth=1164; CHECK-NEXT:    decl %eax165; CHECK-NEXT:    incq %rdi166; CHECK-NEXT:    jmp .LBB1_1167; CHECK-NEXT:  .LBB1_8: # in Loop: Header=BB1_1 Depth=1168; CHECK-NEXT:    negl %eax169; CHECK-NEXT:    incq %rdi170; CHECK-NEXT:    jmp .LBB1_1171; CHECK-NEXT:  .LBB1_9:172; CHECK-NEXT:    retq173  br label %3174 1753:                                                ; preds = %21, %2176  %4 = phi i64 [ 0, %2 ], [ %6, %21 ]177  %5 = phi i32 [ %1, %2 ], [ %22, %21 ]178  %6 = add nuw i64 %4, 1179  %7 = getelementptr inbounds i8, ptr %0, i64 %4180  %8 = load i8, ptr %7, align 1181  switch i8 %8, label %23 [182    i8 6, label %19183    i8 1, label %9184    i8 2, label %11185    i8 3, label %13186    i8 4, label %15187    i8 5, label %17188  ]189 1909:                                                ; preds = %3191  %10 = add nsw i32 %5, 1192  br label %21193 19411:                                               ; preds = %3195  %12 = add nsw i32 %5, -1196  br label %21197 19813:                                               ; preds = %3199  %14 = shl nsw i32 %5, 1200  br label %21201 20215:                                               ; preds = %3203  %16 = sdiv i32 %5, 2204  br label %21205 20617:                                               ; preds = %3207  %18 = add nsw i32 %5, 7208  br label %21209 21019:                                               ; preds = %3211  %20 = sub nsw i32 0, %5212  br label %21213 21421:                                               ; preds = %19, %17, %15, %13, %11, %9215  %22 = phi i32 [ %20, %19 ], [ %18, %17 ], [ %16, %15 ], [ %14, %13 ], [ %12, %11 ], [ %10, %9 ]216  br label %3217 21823:                                               ; preds = %3219  ret i32 %5220}221