brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · a59c71a Raw
158 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+32s,+d --min-jump-table-entries=5 < %s \3; RUN:   | FileCheck %s --check-prefix=LA324; RUN: llc --mtriple=loongarch64 -mattr=+d --min-jump-table-entries=5 < %s \5; RUN:   | FileCheck %s --check-prefix=LA646; RUN: llc --mtriple=loongarch32 -mattr=+32s,+d --min-jump-table-entries=4 < %s \7; RUN:   | FileCheck %s --check-prefix=LA32-JT8; RUN: llc --mtriple=loongarch64 -mattr=+d --min-jump-table-entries=4 < %s \9; RUN:   | FileCheck %s --check-prefix=LA64-JT10 11;; The default mininum number of entries to use a jump table is 4.12;;13;; Note: The parameter `--min-jump-table-entries` will have no effect once we14;; have set the default value using `setMinimumJumpTableEntries`.15 16define void @switch_4_arms(i32 %in, ptr %out) nounwind {17; LA32-LABEL: switch_4_arms:18; LA32:       # %bb.0: # %entry19; LA32-NEXT:    ori $a2, $zero, 220; LA32-NEXT:    blt $a2, $a0, .LBB0_421; LA32-NEXT:  # %bb.1: # %entry22; LA32-NEXT:    ori $a2, $zero, 123; LA32-NEXT:    beq $a0, $a2, .LBB0_724; LA32-NEXT:  # %bb.2: # %entry25; LA32-NEXT:    ori $a2, $zero, 226; LA32-NEXT:    bne $a0, $a2, .LBB0_1027; LA32-NEXT:  # %bb.3: # %bb228; LA32-NEXT:    ori $a0, $zero, 329; LA32-NEXT:    b .LBB0_930; LA32-NEXT:  .LBB0_4: # %entry31; LA32-NEXT:    ori $a2, $zero, 332; LA32-NEXT:    beq $a0, $a2, .LBB0_833; LA32-NEXT:  # %bb.5: # %entry34; LA32-NEXT:    ori $a2, $zero, 435; LA32-NEXT:    bne $a0, $a2, .LBB0_1036; LA32-NEXT:  # %bb.6: # %bb437; LA32-NEXT:    ori $a0, $zero, 138; LA32-NEXT:    b .LBB0_939; LA32-NEXT:  .LBB0_7: # %bb140; LA32-NEXT:    ori $a0, $zero, 441; LA32-NEXT:    b .LBB0_942; LA32-NEXT:  .LBB0_8: # %bb343; LA32-NEXT:    ori $a0, $zero, 244; LA32-NEXT:  .LBB0_9: # %exit45; LA32-NEXT:    st.w $a0, $a1, 046; LA32-NEXT:  .LBB0_10: # %exit47; LA32-NEXT:    ret48;49; LA64-LABEL: switch_4_arms:50; LA64:       # %bb.0: # %entry51; LA64-NEXT:    addi.w $a0, $a0, 052; LA64-NEXT:    ori $a2, $zero, 253; LA64-NEXT:    blt $a2, $a0, .LBB0_454; LA64-NEXT:  # %bb.1: # %entry55; LA64-NEXT:    ori $a2, $zero, 156; LA64-NEXT:    beq $a0, $a2, .LBB0_757; LA64-NEXT:  # %bb.2: # %entry58; LA64-NEXT:    ori $a2, $zero, 259; LA64-NEXT:    bne $a0, $a2, .LBB0_1060; LA64-NEXT:  # %bb.3: # %bb261; LA64-NEXT:    ori $a0, $zero, 362; LA64-NEXT:    b .LBB0_963; LA64-NEXT:  .LBB0_4: # %entry64; LA64-NEXT:    ori $a2, $zero, 365; LA64-NEXT:    beq $a0, $a2, .LBB0_866; LA64-NEXT:  # %bb.5: # %entry67; LA64-NEXT:    ori $a2, $zero, 468; LA64-NEXT:    bne $a0, $a2, .LBB0_1069; LA64-NEXT:  # %bb.6: # %bb470; LA64-NEXT:    ori $a0, $zero, 171; LA64-NEXT:    b .LBB0_972; LA64-NEXT:  .LBB0_7: # %bb173; LA64-NEXT:    ori $a0, $zero, 474; LA64-NEXT:    b .LBB0_975; LA64-NEXT:  .LBB0_8: # %bb376; LA64-NEXT:    ori $a0, $zero, 277; LA64-NEXT:  .LBB0_9: # %exit78; LA64-NEXT:    st.w $a0, $a1, 079; LA64-NEXT:  .LBB0_10: # %exit80; LA64-NEXT:    ret81;82; LA32-JT-LABEL: switch_4_arms:83; LA32-JT:       # %bb.0: # %entry84; LA32-JT-NEXT:    addi.w $a0, $a0, -185; LA32-JT-NEXT:    ori $a2, $zero, 386; LA32-JT-NEXT:    bltu $a2, $a0, .LBB0_787; LA32-JT-NEXT:  # %bb.1: # %entry88; LA32-JT-NEXT:    pcalau12i $a2, %pc_hi20(.LJTI0_0)89; LA32-JT-NEXT:    addi.w $a2, $a2, %pc_lo12(.LJTI0_0)90; LA32-JT-NEXT:    alsl.w $a0, $a0, $a2, 291; LA32-JT-NEXT:    ld.w $a0, $a0, 092; LA32-JT-NEXT:    jr $a093; LA32-JT-NEXT:  .LBB0_2: # %bb194; LA32-JT-NEXT:    ori $a0, $zero, 495; LA32-JT-NEXT:    b .LBB0_696; LA32-JT-NEXT:  .LBB0_3: # %bb397; LA32-JT-NEXT:    ori $a0, $zero, 298; LA32-JT-NEXT:    b .LBB0_699; LA32-JT-NEXT:  .LBB0_4: # %bb4100; LA32-JT-NEXT:    ori $a0, $zero, 1101; LA32-JT-NEXT:    b .LBB0_6102; LA32-JT-NEXT:  .LBB0_5: # %bb2103; LA32-JT-NEXT:    ori $a0, $zero, 3104; LA32-JT-NEXT:  .LBB0_6: # %exit105; LA32-JT-NEXT:    st.w $a0, $a1, 0106; LA32-JT-NEXT:  .LBB0_7: # %exit107; LA32-JT-NEXT:    ret108;109; LA64-JT-LABEL: switch_4_arms:110; LA64-JT:       # %bb.0: # %entry111; LA64-JT-NEXT:    addi.w $a0, $a0, 0112; LA64-JT-NEXT:    addi.d $a0, $a0, -1113; LA64-JT-NEXT:    ori $a2, $zero, 3114; LA64-JT-NEXT:    bltu $a2, $a0, .LBB0_7115; LA64-JT-NEXT:  # %bb.1: # %entry116; LA64-JT-NEXT:    slli.d $a0, $a0, 3117; LA64-JT-NEXT:    pcalau12i $a2, %pc_hi20(.LJTI0_0)118; LA64-JT-NEXT:    addi.d $a2, $a2, %pc_lo12(.LJTI0_0)119; LA64-JT-NEXT:    ldx.d $a0, $a2, $a0120; LA64-JT-NEXT:    jr $a0121; LA64-JT-NEXT:  .LBB0_2: # %bb1122; LA64-JT-NEXT:    ori $a0, $zero, 4123; LA64-JT-NEXT:    b .LBB0_6124; LA64-JT-NEXT:  .LBB0_3: # %bb3125; LA64-JT-NEXT:    ori $a0, $zero, 2126; LA64-JT-NEXT:    b .LBB0_6127; LA64-JT-NEXT:  .LBB0_4: # %bb4128; LA64-JT-NEXT:    ori $a0, $zero, 1129; LA64-JT-NEXT:    b .LBB0_6130; LA64-JT-NEXT:  .LBB0_5: # %bb2131; LA64-JT-NEXT:    ori $a0, $zero, 3132; LA64-JT-NEXT:  .LBB0_6: # %exit133; LA64-JT-NEXT:    st.w $a0, $a1, 0134; LA64-JT-NEXT:  .LBB0_7: # %exit135; LA64-JT-NEXT:    ret136entry:137  switch i32 %in, label %exit [138    i32 1, label %bb1139    i32 2, label %bb2140    i32 3, label %bb3141    i32 4, label %bb4142  ]143bb1:144  store i32 4, ptr %out145  br label %exit146bb2:147  store i32 3, ptr %out148  br label %exit149bb3:150  store i32 2, ptr %out151  br label %exit152bb4:153  store i32 1, ptr %out154  br label %exit155exit:156  ret void157}158