brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 2c032f9 Raw
137 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-min-jump-table-entries=4 < %s | FileCheck %s \4; RUN:   --check-prefix=CHECK-R5; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \6; RUN:   -mcpu=pwr10 -ppc-use-absolute-jumptables -ppc-min-jump-table-entries=4 \7; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s \8; RUN:   --check-prefix=CHECK-A-LE9; RUN: llc -verify-machineinstrs -target-abi=elfv2 -mtriple=powerpc64-- \10; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-min-jump-table-entries=4 < %s | FileCheck %s \11; RUN:   --check-prefix=CHECK-R12; RUN: llc -verify-machineinstrs -target-abi=elfv2 -mtriple=powerpc64-- \13; RUN:   -mcpu=pwr10 -ppc-use-absolute-jumptables -ppc-min-jump-table-entries=4 \14; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s \15; RUN:   --check-prefix=CHECK-A-BE16 17 18; This test checks for getting relative and absolute jump table base address19; using PC Relative addressing.20 21define dso_local signext i32 @jumptable(i32 signext %param) {22; CHECK-R-LABEL: jumptable:23; CHECK-R:       # %bb.0: # %entry24; CHECK-R-NEXT:    addi r4, r3, -125; CHECK-R-NEXT:    cmplwi r4, 1926; CHECK-R-NEXT:    bgt cr0, .LBB0_327; CHECK-R-NEXT:  # %bb.1: # %entry28; CHECK-R-NEXT:    rldic r4, r4, 2, 3029; CHECK-R-NEXT:    paddi r5, 0, .LJTI0_0@PCREL, 130; CHECK-R-NEXT:    lwax r4, r5, r431; CHECK-R-NEXT:    add r4, r5, r432; CHECK-R-NEXT:    mtctr r433; CHECK-R-NEXT:    bctr34; CHECK-R-NEXT:  .LBB0_2: # %sw.bb135; CHECK-R-NEXT:    li r3, 436; CHECK-R-NEXT:    blr37; CHECK-R-NEXT:  .LBB0_3: # %sw.default38; CHECK-R-NEXT:    li r3, -139; CHECK-R-NEXT:  .LBB0_4: # %return40; CHECK-R-NEXT:    blr41; CHECK-R-NEXT:  .LBB0_5: # %sw.bb242; CHECK-R-NEXT:    li r3, 943; CHECK-R-NEXT:    blr44; CHECK-R-NEXT:  .LBB0_6: # %sw.bb345; CHECK-R-NEXT:    li r3, 1646; CHECK-R-NEXT:    blr47; CHECK-R-NEXT:  .LBB0_7: # %sw.bb448; CHECK-R-NEXT:    li r3, 40049; CHECK-R-NEXT:    blr50;51; CHECK-A-LE-LABEL: jumptable:52; CHECK-A-LE:       # %bb.0: # %entry53; CHECK-A-LE-NEXT:    addi r4, r3, -154; CHECK-A-LE-NEXT:    cmplwi r4, 1955; CHECK-A-LE-NEXT:    bgt cr0, .LBB0_356; CHECK-A-LE-NEXT:  # %bb.1: # %entry57; CHECK-A-LE-NEXT:    rldic r4, r4, 3, 2958; CHECK-A-LE-NEXT:    paddi r5, 0, .LJTI0_0@PCREL, 159; CHECK-A-LE-NEXT:    ldx r4, r5, r460; CHECK-A-LE-NEXT:    mtctr r461; CHECK-A-LE-NEXT:    bctr62; CHECK-A-LE-NEXT:  .LBB0_2: # %sw.bb163; CHECK-A-LE-NEXT:    li r3, 464; CHECK-A-LE-NEXT:    blr65; CHECK-A-LE-NEXT:  .LBB0_3: # %sw.default66; CHECK-A-LE-NEXT:    li r3, -167; CHECK-A-LE-NEXT:  .LBB0_4: # %return68; CHECK-A-LE-NEXT:    blr69; CHECK-A-LE-NEXT:  .LBB0_5: # %sw.bb270; CHECK-A-LE-NEXT:    li r3, 971; CHECK-A-LE-NEXT:    blr72; CHECK-A-LE-NEXT:  .LBB0_6: # %sw.bb373; CHECK-A-LE-NEXT:    li r3, 1674; CHECK-A-LE-NEXT:    blr75; CHECK-A-LE-NEXT:  .LBB0_7: # %sw.bb476; CHECK-A-LE-NEXT:    li r3, 40077; CHECK-A-LE-NEXT:    blr78;79; CHECK-A-BE-LABEL: jumptable:80; CHECK-A-BE:       # %bb.0: # %entry81; CHECK-A-BE-NEXT:    addi r4, r3, -182; CHECK-A-BE-NEXT:    cmplwi r4, 1983; CHECK-A-BE-NEXT:    bgt cr0, .LBB0_384; CHECK-A-BE-NEXT:  # %bb.1: # %entry85; CHECK-A-BE-NEXT:    rldic r4, r4, 2, 3086; CHECK-A-BE-NEXT:    paddi r5, 0, .LJTI0_0@PCREL, 187; CHECK-A-BE-NEXT:    lwax r4, r5, r488; CHECK-A-BE-NEXT:    mtctr r489; CHECK-A-BE-NEXT:    bctr90; CHECK-A-BE-NEXT:  .LBB0_2: # %sw.bb191; CHECK-A-BE-NEXT:    li r3, 492; CHECK-A-BE-NEXT:    blr93; CHECK-A-BE-NEXT:  .LBB0_3: # %sw.default94; CHECK-A-BE-NEXT:    li r3, -195; CHECK-A-BE-NEXT:  .LBB0_4: # %return96; CHECK-A-BE-NEXT:    blr97; CHECK-A-BE-NEXT:  .LBB0_5: # %sw.bb298; CHECK-A-BE-NEXT:    li r3, 999; CHECK-A-BE-NEXT:    blr100; CHECK-A-BE-NEXT:  .LBB0_6: # %sw.bb3101; CHECK-A-BE-NEXT:    li r3, 16102; CHECK-A-BE-NEXT:    blr103; CHECK-A-BE-NEXT:  .LBB0_7: # %sw.bb4104; CHECK-A-BE-NEXT:    li r3, 400105; CHECK-A-BE-NEXT:    blr106 107 108entry:109  switch i32 %param, label %sw.default [110    i32 1, label %return111    i32 2, label %sw.bb1112    i32 3, label %sw.bb2113    i32 4, label %sw.bb3114    i32 20, label %sw.bb4115  ]116 117sw.bb1:                                           ; preds = %entry118  br label %return119 120sw.bb2:                                           ; preds = %entry121  br label %return122 123sw.bb3:                                           ; preds = %entry124  br label %return125 126sw.bb4:                                           ; preds = %entry127  br label %return128 129sw.default:                                       ; preds = %entry130  br label %return131 132return:  ; preds = %entry, %sw.default, %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1133  %retval.0 = phi i32 [ -1, %sw.default ], [ 400, %sw.bb4 ], [ 16, %sw.bb3 ],134                      [ 9, %sw.bb2 ], [ 4, %sw.bb1 ], [ %param, %entry ]135  ret i32 %retval.0136}137