[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / X86 / PR71178-register-coalescer-crash.ll
blob12d66f64cb73d5cf23d5444dbda340e7438c22e6
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc < %s -mtriple=x86_64 -- | FileCheck %s
4 define i32 @h(i1 %arg, i32 %arg1) {
5 ; CHECK-LABEL: h:
6 ; CHECK:       # %bb.0: # %bb
7 ; CHECK-NEXT:    movl $1, %eax
8 ; CHECK-NEXT:    movabsq $9166129423, %rcx # imm = 0x22258090F
9 ; CHECK-NEXT:    xorl %edx, %edx
10 ; CHECK-NEXT:    jmp .LBB0_1
11 ; CHECK-NEXT:    .p2align 4
12 ; CHECK-NEXT:  .LBB0_9: # %bb18
13 ; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
14 ; CHECK-NEXT:    xorl %eax, %eax
15 ; CHECK-NEXT:    testb $1, %dil
16 ; CHECK-NEXT:    jne .LBB0_10
17 ; CHECK-NEXT:  .LBB0_1: # %bb4
18 ; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1
19 ; CHECK-NEXT:    testq %rdx, %rdx
20 ; CHECK-NEXT:    jne .LBB0_2
21 ; CHECK-NEXT:  # %bb.7: # %bb16
22 ; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
23 ; CHECK-NEXT:    testb $1, %dil
24 ; CHECK-NEXT:    jne .LBB0_9
25 ; CHECK-NEXT:  # %bb.8: # %bb17
26 ; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
27 ; CHECK-NEXT:    movq %rcx, %rdx
28 ; CHECK-NEXT:    jmp .LBB0_9
29 ; CHECK-NEXT:  .LBB0_2: # %bb9
30 ; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
31 ; CHECK-NEXT:    testb $1, %dil
32 ; CHECK-NEXT:    testb $1, %dil
33 ; CHECK-NEXT:    je .LBB0_4
34 ; CHECK-NEXT:  # %bb.3: # %bb13
35 ; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
36 ; CHECK-NEXT:    xorl %eax, %eax
37 ; CHECK-NEXT:  .LBB0_4: # %bb14
38 ; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=1
39 ; CHECK-NEXT:    cmpl $1, %esi
40 ; CHECK-NEXT:    je .LBB0_1
41 ; CHECK-NEXT:  # %bb.5: # %bb14
42 ; CHECK-NEXT:    movl %eax, %r8d
43 ; CHECK-NEXT:    testl %esi, %esi
44 ; CHECK-NEXT:    movl %esi, %eax
45 ; CHECK-NEXT:    jne .LBB0_6
46 ; CHECK-NEXT:  .LBB0_10: # %bb22
47 ; CHECK-NEXT:    retq
48 ; CHECK-NEXT:  .LBB0_6: # %bb22.loopexit1
49 ; CHECK-NEXT:    movl %r8d, %eax
50 ; CHECK-NEXT:    retq
51 bb:
52   br label %bb2
54 bb2:                                              ; preds = %bb14, %bb
55   %i = phi i64 [ %i5, %bb14 ], [ 0, %bb ]
56   %i3 = phi i32 [ %i15, %bb14 ], [ 1, %bb ]
57   br label %bb4
59 bb4:                                              ; preds = %bb18, %bb2
60   %i5 = phi i64 [ %i19, %bb18 ], [ %i, %bb2 ]
61   %i6 = phi i64 [ %i20, %bb18 ], [ %i, %bb2 ]
62   %i7 = phi i32 [ 0, %bb18 ], [ %i3, %bb2 ]
63   %i8 = icmp eq i64 %i6, 0
64   br i1 %i8, label %bb16, label %bb9
66 bb9:                                              ; preds = %bb4
67   br i1 %arg, label %bb12, label %bb10
69 bb10:                                             ; preds = %bb9
70   %i11 = sdiv i64 0, 0
71   br label %bb12
73 bb12:                                             ; preds = %bb10, %bb9
74   br i1 %arg, label %bb13, label %bb14
76 bb13:                                             ; preds = %bb12
77   br label %bb14
79 bb14:                                             ; preds = %bb13, %bb12
80   %i15 = phi i32 [ 0, %bb13 ], [ %i7, %bb12 ]
81   switch i32 %arg1, label %bb22 [
82     i32 0, label %bb21
83     i32 1, label %bb2
84   ]
86 bb16:                                             ; preds = %bb4
87   br i1 %arg, label %bb18, label %bb17
89 bb17:                                             ; preds = %bb16
90   br label %bb18
92 bb18:                                             ; preds = %bb17, %bb16
93   %i19 = phi i64 [ 9166129423, %bb17 ], [ %i5, %bb16 ]
94   %i20 = phi i64 [ 9166129423, %bb17 ], [ %i6, %bb16 ]
95   br i1 %arg, label %bb22, label %bb4
97 bb21:                                             ; preds = %bb14
98   br label %bb22
100 bb22:                                             ; preds = %bb21, %bb18, %bb14
101   %i23 = phi i32 [ %arg1, %bb21 ], [ %i15, %bb14 ], [ 0, %bb18 ]
102   ret i32 %i23