brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · a42a715 Raw
132 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=x86_64-pc-linux-gnu -verify-coalescing < %s | FileCheck %s3 4%"class.llvm::APInt." = type <{ %union.anon., i32, [4 x i8] }>5%union.anon. = type { i64 }6 7define void @_ZNK4llvm5APInt21multiplicativeInverseERKS0_(ptr %r) {8; CHECK-LABEL: _ZNK4llvm5APInt21multiplicativeInverseERKS0_:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    xorl %edx, %edx11; CHECK-NEXT:    xorl %eax, %eax12; CHECK-NEXT:    xorl %ecx, %ecx13; CHECK-NEXT:    jmp .LBB0_114; CHECK-NEXT:    .p2align 415; CHECK-NEXT:  .LBB0_4: # %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i16; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=117; CHECK-NEXT:    movl %edx, %edx18; CHECK-NEXT:    shlq $4, %rdx19; CHECK-NEXT:    movl $0, (%rdi,%rdx)20; CHECK-NEXT:    movl %ecx, %edx21; CHECK-NEXT:  .LBB0_1: # %bb22; CHECK-NEXT:    # =>This Loop Header: Depth=123; CHECK-NEXT:    # Child Loop BB0_3 Depth 224; CHECK-NEXT:    xorl $1, %ecx25; CHECK-NEXT:    xorl %esi, %esi26; CHECK-NEXT:    movq %rcx, %r827; CHECK-NEXT:    testb %al, %al28; CHECK-NEXT:    jne .LBB0_429; CHECK-NEXT:    .p2align 430; CHECK-NEXT:  .LBB0_3: # %for.body.i.i.i.i.i.331; CHECK-NEXT:    # Parent Loop BB0_1 Depth=132; CHECK-NEXT:    # => This Inner Loop Header: Depth=233; CHECK-NEXT:    orq $1, %r834; CHECK-NEXT:    orq $1, %rsi35; CHECK-NEXT:    testb %al, %al36; CHECK-NEXT:    je .LBB0_337; CHECK-NEXT:    jmp .LBB0_438entry:39  br label %bb40 41bb:                                               ; preds = %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i, %entry42  %i.0 = phi i32 [ 0, %entry ], [ %xor, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i ]43  %xor = xor i32 %i.0, 144  %idxprom = zext nneg i32 %xor to i6445  br label %for.body.i.i.i.i.i46 47for.body.i.i.i.i.i:                               ; preds = %for.body.i.i.i.i.i.3, %bb48  %lsr.iv37 = phi i64 [ %lsr.iv.next38, %for.body.i.i.i.i.i.3 ], [ 0, %bb ]49  %lsr.iv = phi i64 [ %lsr.iv.next, %for.body.i.i.i.i.i.3 ], [ %idxprom, %bb ]50  %exitcond.not.i.i.i.i.i.2 = icmp eq i64 0, 151  br i1 %exitcond.not.i.i.i.i.i.2, label %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i, label %for.body.i.i.i.i.i.352 53for.body.i.i.i.i.i.3:                             ; preds = %for.body.i.i.i.i.i54  %sunkaddr55 = mul i64 %lsr.iv37, 055  %i = xor i64 %lsr.iv, 056  %lsr.iv.next = or i64 %lsr.iv, 157  %lsr.iv.next38 = or i64 %lsr.iv37, 158  br label %for.body.i.i.i.i.i59 60_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i:        ; preds = %for.body.i.i.i.i.i61  %idxprom12 = zext nneg i32 %i.0 to i6462  %arrayidx13 = getelementptr [2 x %"class.llvm::APInt."], ptr %r, i64 0, i64 %idxprom1263  store i32 0, ptr %arrayidx13, align 464  br label %bb65}66 67; This variant hit an assert and never reached the verifier error68define void @_ZNK4llvm5APInt21multiplicativeInverseERKS0__assert(ptr %r) {69; CHECK-LABEL: _ZNK4llvm5APInt21multiplicativeInverseERKS0__assert:70; CHECK:       # %bb.0: # %entry71; CHECK-NEXT:    xorl %edx, %edx72; CHECK-NEXT:    xorl %eax, %eax73; CHECK-NEXT:    xorl %ecx, %ecx74; CHECK-NEXT:    jmp .LBB1_175; CHECK-NEXT:    .p2align 476; CHECK-NEXT:  .LBB1_4: # %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i77; CHECK-NEXT:    # in Loop: Header=BB1_1 Depth=178; CHECK-NEXT:    movl %edx, %edx79; CHECK-NEXT:    shlq $4, %rdx80; CHECK-NEXT:    movl $0, (%rdi,%rdx)81; CHECK-NEXT:    movl %ecx, %edx82; CHECK-NEXT:  .LBB1_1: # %bb83; CHECK-NEXT:    # =>This Loop Header: Depth=184; CHECK-NEXT:    # Child Loop BB1_3 Depth 285; CHECK-NEXT:    xorl $1, %ecx86; CHECK-NEXT:    movq %rcx, %rsi87; CHECK-NEXT:    shlq $4, %rsi88; CHECK-NEXT:    movq (%rsi), %rsi89; CHECK-NEXT:    xorl %r8d, %r8d90; CHECK-NEXT:    testb %al, %al91; CHECK-NEXT:    jne .LBB1_492; CHECK-NEXT:    .p2align 493; CHECK-NEXT:  .LBB1_3: # %for.body.i.i.i.i.i.394; CHECK-NEXT:    # Parent Loop BB1_1 Depth=195; CHECK-NEXT:    # => This Inner Loop Header: Depth=296; CHECK-NEXT:    orq $1, %rsi97; CHECK-NEXT:    orq $1, %r898; CHECK-NEXT:    testb %al, %al99; CHECK-NEXT:    je .LBB1_3100; CHECK-NEXT:    jmp .LBB1_4101entry:102  br label %bb103 104bb:                                               ; preds = %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i, %entry105  %i.0 = phi i32 [ 0, %entry ], [ %xor, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i ]106  %xor = xor i32 %i.0, 1107  %idxprom = zext nneg i32 %xor to i64108  %arrayidx = getelementptr [2 x %"class.llvm::APInt."], ptr null, i64 0, i64 %idxprom109  %i.i.i.i.i.i = load ptr, ptr %arrayidx, align 16110  %i.i.i.i.i.i36 = ptrtoint ptr %i.i.i.i.i.i to i64111  br label %for.body.i.i.i.i.i112 113for.body.i.i.i.i.i:                               ; preds = %for.body.i.i.i.i.i.3, %bb114  %lsr.iv37 = phi i64 [ %lsr.iv.next38, %for.body.i.i.i.i.i.3 ], [ 0, %bb ]115  %lsr.iv = phi i64 [ %lsr.iv.next, %for.body.i.i.i.i.i.3 ], [ %i.i.i.i.i.i36, %bb ]116  %exitcond.not.i.i.i.i.i.2 = icmp eq i64 0, 1117  br i1 %exitcond.not.i.i.i.i.i.2, label %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i, label %for.body.i.i.i.i.i.3118 119for.body.i.i.i.i.i.3:                             ; preds = %for.body.i.i.i.i.i120  %sunkaddr55 = mul i64 %lsr.iv37, 0121  %i = xor i64 %lsr.iv, 0122  %lsr.iv.next = or i64 %lsr.iv, 1123  %lsr.iv.next38 = or i64 %lsr.iv37, 1124  br label %for.body.i.i.i.i.i125 126_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i:        ; preds = %for.body.i.i.i.i.i127  %idxprom12 = zext nneg i32 %i.0 to i64128  %arrayidx13 = getelementptr [2 x %"class.llvm::APInt."], ptr %r, i64 0, i64 %idxprom12129  store i32 0, ptr %arrayidx13, align 4130  br label %bb131}132