brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · b6294e9 Raw
171 lines · plain
1; RUN: llc -mtriple=x86_64-unknown-linux < %s | FileCheck %s2 3@g = external global i84 5declare void @f0()6declare void @f1()7declare void @f2()8declare void @f3()9declare void @f4()10declare void @f5()11declare void @f6()12declare void @f7()13declare void @f8()14declare void @f9()15 16declare void @llvm.icall.branch.funnel(...)17 18define void @jt2(ptr nest, ...) {19  ; CHECK: jt2:20  ; CHECK:      leaq g+1(%rip), %r1121  ; CHECK-NEXT: cmpq %r11, %r1022  ; CHECK-NEXT: jae .LBB0_123  ; CHECK-NEXT: #24  ; CHECK-NEXT: jmp f025  ; CHECK-NEXT: .LBB0_1:26  ; CHECK-NEXT: jmp f127  musttail call void (...) @llvm.icall.branch.funnel(28      ptr %0,29      ptr @g, ptr @f0,30      ptr getelementptr (i8, ptr @g, i64 1), ptr @f1,31      ...32  )33  ret void34}35 36define void @jt3(ptr nest, ...) {37  ; CHECK: jt3:38  ; CHECK:      leaq g+1(%rip), %r1139  ; CHECK-NEXT: cmpq %r11, %r1040  ; CHECK-NEXT: jae .LBB1_141  ; CHECK-NEXT: #42  ; CHECK-NEXT: jmp f043  ; CHECK-NEXT: .LBB1_1:44  ; CHECK-NEXT: jne .LBB1_245  ; CHECK-NEXT: #46  ; CHECK-NEXT: jmp f147  ; CHECK-NEXT: .LBB1_2:48  ; CHECK-NEXT: jmp f249  musttail call void (...) @llvm.icall.branch.funnel(50      ptr %0,51      ptr @g, ptr @f0,52      ptr getelementptr (i8, ptr @g, i64 2), ptr @f2,53      ptr getelementptr (i8, ptr @g, i64 1), ptr @f1,54      ...55  )56  ret void57}58 59define void @jt7(ptr nest, ...) {60  ; CHECK: jt7:61  ; CHECK:      leaq g+3(%rip), %r1162  ; CHECK-NEXT: cmpq %r11, %r1063  ; CHECK-NEXT: jae .LBB2_164  ; CHECK-NEXT: #65  ; CHECK-NEXT: leaq g+1(%rip), %r1166  ; CHECK-NEXT: cmpq %r11, %r1067  ; CHECK-NEXT: jae .LBB2_668  ; CHECK-NEXT: #69  ; CHECK-NEXT: jmp f070  ; CHECK-NEXT: .LBB2_1:71  ; CHECK-NEXT: jne .LBB2_272  ; CHECK-NEXT: #73  ; CHECK-NEXT: jmp f374  ; CHECK-NEXT: .LBB2_6:75  ; CHECK-NEXT: jne .LBB2_776  ; CHECK-NEXT: #77  ; CHECK-NEXT: jmp f178  ; CHECK-NEXT: .LBB2_2:79  ; CHECK-NEXT: leaq g+5(%rip), %r1180  ; CHECK-NEXT: cmpq %r11, %r1081  ; CHECK-NEXT: jae .LBB2_382  ; CHECK-NEXT: #83  ; CHECK-NEXT: jmp f484  ; CHECK-NEXT: .LBB2_7:85  ; CHECK-NEXT: jmp f286  ; CHECK-NEXT: .LBB2_3:87  ; CHECK-NEXT: jne .LBB2_488  ; CHECK-NEXT: #89  ; CHECK-NEXT: jmp f590  ; CHECK-NEXT: .LBB2_4:91  ; CHECK-NEXT: jmp f692  musttail call void (...) @llvm.icall.branch.funnel(93      ptr %0,94      ptr @g, ptr @f0,95      ptr getelementptr (i8, ptr @g, i64 1), ptr @f1,96      ptr getelementptr (i8, ptr @g, i64 2), ptr @f2,97      ptr getelementptr (i8, ptr @g, i64 3), ptr @f3,98      ptr getelementptr (i8, ptr @g, i64 4), ptr @f4,99      ptr getelementptr (i8, ptr @g, i64 5), ptr @f5,100      ptr getelementptr (i8, ptr @g, i64 6), ptr @f6,101      ...102  )103  ret void104}105 106define void @jt10(ptr nest, ...) {107  ; CHECK: jt10:108  ; CHECK:      leaq g+5(%rip), %r11109  ; CHECK-NEXT: cmpq %r11, %r10110  ; CHECK-NEXT: jae .LBB3_1111  ; CHECK-NEXT: #112  ; CHECK-NEXT: leaq g+1(%rip), %r11113  ; CHECK-NEXT: cmpq %r11, %r10114  ; CHECK-NEXT: jae .LBB3_7115  ; CHECK-NEXT: #116  ; CHECK-NEXT: jmp f0117  ; CHECK-NEXT: .LBB3_1:118  ; CHECK-NEXT: jne .LBB3_2119  ; CHECK-NEXT: #120  ; CHECK-NEXT: jmp f5121  ; CHECK-NEXT: .LBB3_7:122  ; CHECK-NEXT: jne .LBB3_8123  ; CHECK-NEXT: #124  ; CHECK-NEXT: jmp f1125  ; CHECK-NEXT: .LBB3_2:126  ; CHECK-NEXT: leaq g+7(%rip), %r11127  ; CHECK-NEXT: cmpq %r11, %r10128  ; CHECK-NEXT: jae .LBB3_3129  ; CHECK-NEXT: #130  ; CHECK-NEXT: jmp f6131  ; CHECK-NEXT: .LBB3_8:132  ; CHECK-NEXT: leaq g+3(%rip), %r11133  ; CHECK-NEXT: cmpq %r11, %r10134  ; CHECK-NEXT: jae .LBB3_9135  ; CHECK-NEXT: #136  ; CHECK-NEXT: jmp f2137  ; CHECK-NEXT: .LBB3_3:138  ; CHECK-NEXT: jne .LBB3_4139  ; CHECK-NEXT: #140  ; CHECK-NEXT: jmp f7141  ; CHECK-NEXT: .LBB3_9:142  ; CHECK-NEXT: jne .LBB3_10143  ; CHECK-NEXT: #144  ; CHECK-NEXT: jmp f3145  ; CHECK-NEXT: .LBB3_4:146  ; CHECK-NEXT: leaq g+9(%rip), %r11147  ; CHECK-NEXT: cmpq %r11, %r10148  ; CHECK-NEXT: jae .LBB3_5149  ; CHECK-NEXT: #150  ; CHECK-NEXT: jmp f8151  ; CHECK-NEXT: .LBB3_10:152  ; CHECK-NEXT: jmp f4153  ; CHECK-NEXT: .LBB3_5:154  ; CHECK-NEXT: jmp f9155  musttail call void (...) @llvm.icall.branch.funnel(156      ptr %0,157      ptr @g, ptr @f0,158      ptr getelementptr (i8, ptr @g, i64 1), ptr @f1,159      ptr getelementptr (i8, ptr @g, i64 2), ptr @f2,160      ptr getelementptr (i8, ptr @g, i64 3), ptr @f3,161      ptr getelementptr (i8, ptr @g, i64 4), ptr @f4,162      ptr getelementptr (i8, ptr @g, i64 5), ptr @f5,163      ptr getelementptr (i8, ptr @g, i64 6), ptr @f6,164      ptr getelementptr (i8, ptr @g, i64 7), ptr @f7,165      ptr getelementptr (i8, ptr @g, i64 8), ptr @f8,166      ptr getelementptr (i8, ptr @g, i64 9), ptr @f9,167      ...168  )169  ret void170}171