brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · c1343d3 Raw
138 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -verify-machineinstrs -mcpu=mvp -mattr=+multivalue -target-abi=experimental-mv | FileCheck %s --check-prefix=MULTIVALUE3; RUN: llc < %s -verify-machineinstrs -mcpu=mvp | FileCheck %s --check-prefix=NO_MULTIVALUE4 5; Test libcall signatures when multivalue is enabled and disabled6 7target triple = "wasm32-unknown-unknown"8 9define i128 @multivalue_sdiv(i128 %a, i128 %b) {10; MULTIVALUE-LABEL: multivalue_sdiv:11; MULTIVALUE:         .functype multivalue_sdiv (i64, i64, i64, i64) -> (i64, i64)12; MULTIVALUE-NEXT:  # %bb.0:13; MULTIVALUE-NEXT:    local.get 014; MULTIVALUE-NEXT:    local.get 115; MULTIVALUE-NEXT:    local.get 216; MULTIVALUE-NEXT:    local.get 317; MULTIVALUE-NEXT:    call __divti318; MULTIVALUE-NEXT:    # fallthrough-return19;20; NO_MULTIVALUE-LABEL: multivalue_sdiv:21; NO_MULTIVALUE:         .functype multivalue_sdiv (i32, i64, i64, i64, i64) -> ()22; NO_MULTIVALUE-NEXT:    .local i3223; NO_MULTIVALUE-NEXT:  # %bb.0:24; NO_MULTIVALUE-NEXT:    global.get __stack_pointer25; NO_MULTIVALUE-NEXT:    i32.const 1626; NO_MULTIVALUE-NEXT:    i32.sub27; NO_MULTIVALUE-NEXT:    local.tee 528; NO_MULTIVALUE-NEXT:    global.set __stack_pointer29; NO_MULTIVALUE-NEXT:    local.get 530; NO_MULTIVALUE-NEXT:    local.get 131; NO_MULTIVALUE-NEXT:    local.get 232; NO_MULTIVALUE-NEXT:    local.get 333; NO_MULTIVALUE-NEXT:    local.get 434; NO_MULTIVALUE-NEXT:    call __divti335; NO_MULTIVALUE-NEXT:    local.get 036; NO_MULTIVALUE-NEXT:    local.get 537; NO_MULTIVALUE-NEXT:    i64.load 838; NO_MULTIVALUE-NEXT:    i64.store 839; NO_MULTIVALUE-NEXT:    local.get 040; NO_MULTIVALUE-NEXT:    local.get 541; NO_MULTIVALUE-NEXT:    i64.load 042; NO_MULTIVALUE-NEXT:    i64.store 043; NO_MULTIVALUE-NEXT:    local.get 544; NO_MULTIVALUE-NEXT:    i32.const 1645; NO_MULTIVALUE-NEXT:    i32.add46; NO_MULTIVALUE-NEXT:    global.set __stack_pointer47; NO_MULTIVALUE-NEXT:    # fallthrough-return48  %div = sdiv i128 %a, %b49  ret i128 %div50}51 52 53define fp128 @multivalue_fsub(fp128 %a, fp128 %b) {54; MULTIVALUE-LABEL: multivalue_fsub:55; MULTIVALUE:         .functype multivalue_fsub (i64, i64, i64, i64) -> (i64, i64)56; MULTIVALUE-NEXT:  # %bb.0:57; MULTIVALUE-NEXT:    local.get 058; MULTIVALUE-NEXT:    local.get 159; MULTIVALUE-NEXT:    local.get 260; MULTIVALUE-NEXT:    local.get 361; MULTIVALUE-NEXT:    call __subtf362; MULTIVALUE-NEXT:    # fallthrough-return63;64; NO_MULTIVALUE-LABEL: multivalue_fsub:65; NO_MULTIVALUE:         .functype multivalue_fsub (i32, i64, i64, i64, i64) -> ()66; NO_MULTIVALUE-NEXT:    .local i3267; NO_MULTIVALUE-NEXT:  # %bb.0:68; NO_MULTIVALUE-NEXT:    global.get __stack_pointer69; NO_MULTIVALUE-NEXT:    i32.const 1670; NO_MULTIVALUE-NEXT:    i32.sub71; NO_MULTIVALUE-NEXT:    local.tee 572; NO_MULTIVALUE-NEXT:    global.set __stack_pointer73; NO_MULTIVALUE-NEXT:    local.get 574; NO_MULTIVALUE-NEXT:    local.get 175; NO_MULTIVALUE-NEXT:    local.get 276; NO_MULTIVALUE-NEXT:    local.get 377; NO_MULTIVALUE-NEXT:    local.get 478; NO_MULTIVALUE-NEXT:    call __subtf379; NO_MULTIVALUE-NEXT:    local.get 080; NO_MULTIVALUE-NEXT:    local.get 581; NO_MULTIVALUE-NEXT:    i64.load 882; NO_MULTIVALUE-NEXT:    i64.store 883; NO_MULTIVALUE-NEXT:    local.get 084; NO_MULTIVALUE-NEXT:    local.get 585; NO_MULTIVALUE-NEXT:    i64.load 086; NO_MULTIVALUE-NEXT:    i64.store 087; NO_MULTIVALUE-NEXT:    local.get 588; NO_MULTIVALUE-NEXT:    i32.const 1689; NO_MULTIVALUE-NEXT:    i32.add90; NO_MULTIVALUE-NEXT:    global.set __stack_pointer91; NO_MULTIVALUE-NEXT:    # fallthrough-return92  %sub = fsub fp128 %a, %b93  ret fp128 %sub94}95 96define i128 @multivalue_lshr(i128 %a, i128 %b) {97; MULTIVALUE-LABEL: multivalue_lshr:98; MULTIVALUE:         .functype multivalue_lshr (i64, i64, i64, i64) -> (i64, i64)99; MULTIVALUE-NEXT:  # %bb.0:100; MULTIVALUE-NEXT:    local.get 2101; MULTIVALUE-NEXT:    local.get 3102; MULTIVALUE-NEXT:    local.get 0103; MULTIVALUE-NEXT:    i32.wrap_i64104; MULTIVALUE-NEXT:    call __ashlti3105; MULTIVALUE-NEXT:    # fallthrough-return106;107; NO_MULTIVALUE-LABEL: multivalue_lshr:108; NO_MULTIVALUE:         .functype multivalue_lshr (i32, i64, i64, i64, i64) -> ()109; NO_MULTIVALUE-NEXT:    .local i32110; NO_MULTIVALUE-NEXT:  # %bb.0:111; NO_MULTIVALUE-NEXT:    global.get __stack_pointer112; NO_MULTIVALUE-NEXT:    i32.const 16113; NO_MULTIVALUE-NEXT:    i32.sub114; NO_MULTIVALUE-NEXT:    local.tee 5115; NO_MULTIVALUE-NEXT:    global.set __stack_pointer116; NO_MULTIVALUE-NEXT:    local.get 5117; NO_MULTIVALUE-NEXT:    local.get 3118; NO_MULTIVALUE-NEXT:    local.get 4119; NO_MULTIVALUE-NEXT:    local.get 1120; NO_MULTIVALUE-NEXT:    i32.wrap_i64121; NO_MULTIVALUE-NEXT:    call __ashlti3122; NO_MULTIVALUE-NEXT:    local.get 0123; NO_MULTIVALUE-NEXT:    local.get 5124; NO_MULTIVALUE-NEXT:    i64.load 8125; NO_MULTIVALUE-NEXT:    i64.store 8126; NO_MULTIVALUE-NEXT:    local.get 0127; NO_MULTIVALUE-NEXT:    local.get 5128; NO_MULTIVALUE-NEXT:    i64.load 0129; NO_MULTIVALUE-NEXT:    i64.store 0130; NO_MULTIVALUE-NEXT:    local.get 5131; NO_MULTIVALUE-NEXT:    i32.const 16132; NO_MULTIVALUE-NEXT:    i32.add133; NO_MULTIVALUE-NEXT:    global.set __stack_pointer134; NO_MULTIVALUE-NEXT:    # fallthrough-return135  %tmp = shl i128 %b, %a136  ret i128 %tmp137}138