brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 61b0df5 Raw
76 lines · plain
1; RUN: llc -o - %s -mtriple=aarch64-none-linux-gnu -mattr=+force-32bit-jump-tables -aarch64-min-jump-table-entries=4 -aarch64-enable-atomic-cfg-tidy=0 | FileCheck %s2; RUN: llc -o - %s -mtriple=aarch64-none-linux-gnu -mcpu=exynos-m3 -aarch64-min-jump-table-entries=4 -aarch64-enable-atomic-cfg-tidy=0 | FileCheck %s3 4; Exynos doesn't want jump tables to be compressed for now.5 6define i32 @test_jumptable(i32 %in)  {7  switch i32 %in, label %def [8    i32 0, label %lbl19    i32 1, label %lbl210    i32 2, label %lbl311    i32 4, label %lbl412  ]13; CHECK-LABEL: test_jumptable:14; CHECK:     adrp [[JTPAGE:x[0-9]+]], .LJTI0_015; CHECK:     add x[[JT:[0-9]+]], [[JTPAGE]], {{#?}}:lo12:.LJTI0_016; CHECK:  [[PCREL_LBL:.Ltmp.*]]:17; CHECK-NEXT: adr [[PCBASE:x[0-9]+]], [[PCREL_LBL]]18; CHECK:     ldrsw x[[OFFSET:[0-9]+]], [x[[JT]], {{x[0-9]+}}, lsl #2]19; CHECK:     add [[DEST:x[0-9]+]], [[PCBASE]], x[[OFFSET]]20; CHECK:     br [[DEST]]21 22 23; CHECK: .LJTI0_0:24; CHECK-NEXT:     .word .LBB{{.*}}-[[PCREL_LBL]]25 26def:27  ret i32 028 29lbl1:30  ret i32 131 32lbl2:33  ret i32 234 35lbl3:36  ret i32 437 38lbl4:39  ret i32 840 41}42 43define i32 @test_jumptable_minsize(i32 %in) minsize {44  switch i32 %in, label %def [45    i32 0, label %lbl146    i32 1, label %lbl247    i32 2, label %lbl348    i32 4, label %lbl449  ]50; CHECK-LABEL: test_jumptable_minsize:51; CHECK:     adrp [[JTPAGE:x[0-9]+]], .LJTI1_052; CHECK:     add x[[JT:[0-9]+]], [[JTPAGE]], {{#?}}:lo12:.LJTI1_053; CHECK:     adr [[PCBASE:x[0-9]+]], [[JTBASE:.LBB[0-9]+_[0-9]+]]54; CHECK:     ldrb w[[OFFSET:[0-9]+]], [x[[JT]], {{x[0-9]+}}]55; CHECK:     add [[DEST:x[0-9]+]], [[PCBASE]], x[[OFFSET]], lsl #256; CHECK:     br [[DEST]]57 58 59 60def:61  ret i32 062 63lbl1:64  ret i32 165 66lbl2:67  ret i32 268 69lbl3:70  ret i32 471 72lbl4:73  ret i32 874 75}76