brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 7cdff6e Raw
202 lines · plain
1; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=0 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK0  < %t2; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=2 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK2  < %t3; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=4 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK4  < %t4; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=8 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK8  < %t5; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=12 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK12  < %t6; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK-DEFAULT  < %t7 8declare void @ext(i32, i32)9 10define i32 @jt2(i32 %a, i32 %b) {11entry:12  switch i32 %a, label %return [13    i32 1, label %bb114    i32 3, label %bb215  ]16; CHECK-LABEL: function jt2:17; CHECK0-NEXT: Jump Tables:18; CHECK2-NEXT: Jump Tables:19; CHECK4-NOT: {{^}}Jump Tables:20; CHECK8-NOT: {{^}}Jump Tables:21; CHECK12-NOT: {{^}}Jump Tables:22; CHECK-DEFAULT-NOT: {{^}}Jump Tables:23 24bb1: tail call void @ext(i32 1, i32 0) br label %return25bb2: tail call void @ext(i32 2, i32 2) br label %return26 27return: ret i32 %b28}29 30define i32 @jt4(i32 %a, i32 %b) {31entry:32  switch i32 %a, label %return [33    i32 1, label %bb134    i32 2, label %bb235    i32 3, label %bb336    i32 5, label %bb437  ]38; CHECK-LABEL: function jt4:39; CHECK0-NEXT: Jump Tables:40; CHECK2-NEXT: Jump Tables:41; CHECK4-NEXT: Jump Tables:42; CHECK8-NOT: {{^}}Jump Tables:43; CHECK12-NOT: {{^}}Jump Tables:44; CHECK-DEFAULT-NOT: {{^}}Jump Tables:45 46bb1: tail call void @ext(i32 1, i32 0) br label %return47bb2: tail call void @ext(i32 3, i32 2) br label %return48bb3: tail call void @ext(i32 4, i32 4) br label %return49bb4: tail call void @ext(i32 5, i32 6) br label %return50 51return: ret i32 %b52}53 54define i32 @jt8(i32 %a, i32 %b) {55entry:56  switch i32 %a, label %return [57    i32 1, label %bb158    i32 2, label %bb259    i32 3, label %bb360    i32 4, label %bb461    i32 5, label %bb562    i32 6, label %bb663    i32 7, label %bb764    i32 9, label %bb865  ]66; CHECK-LABEL: function jt8:67; CHECK0-NEXT: Jump Tables:68; CHECK2-NEXT: Jump Tables:69; CHECK4-NEXT: Jump Tables:70; CHECK8-NEXT: Jump Tables:71; CHECK12-NOT: Jump Tables:72; CHECK-DEFAULT-NOT: {{^}}Jump Tables:73 74bb1: tail call void @ext(i32 1, i32 0) br label %return75bb2: tail call void @ext(i32 2, i32 2) br label %return76bb3: tail call void @ext(i32 3, i32 4) br label %return77bb4: tail call void @ext(i32 4, i32 6) br label %return78bb5: tail call void @ext(i32 5, i32 8) br label %return79bb6: tail call void @ext(i32 6, i32 10) br label %return80bb7: tail call void @ext(i32 7, i32 12) br label %return81bb8: tail call void @ext(i32 8, i32 14) br label %return82 83return: ret i32 %b84}85 86define i32 @jt12(i32 %a, i32 %b) {87entry:88  switch i32 %a, label %return [89    i32 1, label %bb190    i32 2, label %bb291    i32 3, label %bb392    i32 4, label %bb493    i32 5, label %bb594    i32 6, label %bb695    i32 7, label %bb796    i32 8, label %bb897    i32 9, label %bb998    i32 10, label %bb1099    i32 11, label %bb11100    i32 12, label %bb12101  ]102; CHECK-LABEL: function jt12:103; CHECK0-NEXT: Jump Tables:104; CHECK2-NEXT: Jump Tables:105; CHECK4-NEXT: Jump Tables:106; CHECK8-NEXT: Jump Tables:107; CHECK12-NEXT: Jump Tables:108; CHECK-DEFAULT: {{^}}Jump Tables:109 110bb1: tail call void @ext(i32 1, i32 0) br label %return111bb2: tail call void @ext(i32 2, i32 2) br label %return112bb3: tail call void @ext(i32 3, i32 4) br label %return113bb4: tail call void @ext(i32 4, i32 6) br label %return114bb5: tail call void @ext(i32 5, i32 8) br label %return115bb6: tail call void @ext(i32 6, i32 10) br label %return116bb7: tail call void @ext(i32 7, i32 12) br label %return117bb8: tail call void @ext(i32 8, i32 14) br label %return118bb9: tail call void @ext(i32 9, i32 16) br label %return119bb10: tail call void @ext(i32 10, i32 18) br label %return120bb11: tail call void @ext(i32 11, i32 20) br label %return121bb12: tail call void @ext(i32 12, i32 22) br label %return122 123return: ret i32 %b124}125 126define i32 @jt12_min_size(i32 %a, i32 %b) minsize {127entry:128  switch i32 %a, label %return [129    i32 1, label %bb1130    i32 2, label %bb2131    i32 3, label %bb3132    i32 4, label %bb4133    i32 5, label %bb5134    i32 6, label %bb6135    i32 7, label %bb7136    i32 8, label %bb8137    i32 9, label %bb9138    i32 10, label %bb10139    i32 11, label %bb11140    i32 12, label %bb12141  ]142; CHECK-LABEL: function jt12_min_size:143; CHECK0-NEXT: Jump Tables:144; CHECK2-NEXT: Jump Tables:145; CHECK4-NEXT: Jump Tables:146; CHECK8-NEXT: Jump Tables:147; CHECK12-NEXT: Jump Tables:148; CHECK-DEFAULT: Jump Tables:149 150bb1: tail call void @ext(i32 1, i32 0) br label %return151bb2: tail call void @ext(i32 2, i32 2) br label %return152bb3: tail call void @ext(i32 3, i32 4) br label %return153bb4: tail call void @ext(i32 4, i32 6) br label %return154bb5: tail call void @ext(i32 5, i32 8) br label %return155bb6: tail call void @ext(i32 6, i32 10) br label %return156bb7: tail call void @ext(i32 7, i32 12) br label %return157bb8: tail call void @ext(i32 8, i32 14) br label %return158bb9: tail call void @ext(i32 9, i32 16) br label %return159bb10: tail call void @ext(i32 10, i32 18) br label %return160bb11: tail call void @ext(i32 11, i32 20) br label %return161bb12: tail call void @ext(i32 12, i32 22) br label %return162 163return: ret i32 %b164}165 166define i32 @jt13(i32 %a, i32 %b) {167entry:168  switch i32 %a, label %return [169    i32 1, label %bb1170    i32 2, label %bb2171    i32 3, label %bb3172    i32 4, label %bb4173    i32 5, label %bb5174    i32 6, label %bb6175    i32 7, label %bb7176    i32 8, label %bb8177    i32 9, label %bb9178    i32 10, label %bb10179    i32 11, label %bb11180    i32 12, label %bb12181    i32 13, label %bb13182  ]183; CHECK-LABEL: function jt13:184; CHECK-NEXT: Jump Tables:185 186bb1: tail call void @ext(i32 1, i32 0) br label %return187bb2: tail call void @ext(i32 2, i32 2) br label %return188bb3: tail call void @ext(i32 3, i32 4) br label %return189bb4: tail call void @ext(i32 4, i32 6) br label %return190bb5: tail call void @ext(i32 5, i32 8) br label %return191bb6: tail call void @ext(i32 6, i32 10) br label %return192bb7: tail call void @ext(i32 7, i32 12) br label %return193bb8: tail call void @ext(i32 8, i32 14) br label %return194bb9: tail call void @ext(i32 9, i32 16) br label %return195bb10: tail call void @ext(i32 10, i32 18) br label %return196bb11: tail call void @ext(i32 11, i32 20) br label %return197bb12: tail call void @ext(i32 12, i32 22) br label %return198bb13: tail call void @ext(i32 13, i32 24) br label %return199 200return: ret i32 %b201}202