brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · 2714d6a Raw
162 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z16 -verify-machineinstrs \3; RUN:   | FileCheck %s4;5; Some tests with comparisons and their uses involving 16-bit floating point.6 7; fcmp half; select half8define half @fun0(half %Arg0, half %Arg1) {9; CHECK-LABEL: fun0:10; CHECK:       # %bb.0: # %entry11; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)12; CHECK-NEXT:    .cfi_offset %r14, -4813; CHECK-NEXT:    .cfi_offset %r15, -4014; CHECK-NEXT:    aghi %r15, -17615; CHECK-NEXT:    .cfi_def_cfa_offset 33616; CHECK-NEXT:    std %f8, 168(%r15) # 8-byte Spill17; CHECK-NEXT:    std %f9, 160(%r15) # 8-byte Spill18; CHECK-NEXT:    .cfi_offset %f8, -16819; CHECK-NEXT:    .cfi_offset %f9, -17620; CHECK-NEXT:    ldr %f8, %f221; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT22; CHECK-NEXT:    ldr %f9, %f023; CHECK-NEXT:    ldr %f0, %f824; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT25; CHECK-NEXT:    ltebr %f1, %f926; CHECK-NEXT:    # kill: def $f0s killed $f0s def $v027; CHECK-NEXT:    jl .LBB0_228; CHECK-NEXT:  # %bb.1: # %entry29; CHECK-NEXT:    vgmf %v0, 2, 830; CHECK-NEXT:  .LBB0_2: # %entry31; CHECK-NEXT:    # kill: def $f0s killed $f0s killed $v032; CHECK-NEXT:    brasl %r14, __truncsfhf2@PLT33; CHECK-NEXT:    ld %f8, 168(%r15) # 8-byte Reload34; CHECK-NEXT:    ld %f9, 160(%r15) # 8-byte Reload35; CHECK-NEXT:    lmg %r14, %r15, 288(%r15)36; CHECK-NEXT:    br %r1437entry:38  %cmp = fcmp olt half %Arg0, 0xH000039  %cond = select i1 %cmp, half %Arg1, half 1.040  ret half %cond41}42 43; fcmp half; select i3244define i32 @fun1(half %Arg0, i32 %Arg1) {45; CHECK-LABEL: fun1:46; CHECK:       # %bb.0: # %entry47; CHECK-NEXT:    stmg %r13, %r15, 104(%r15)48; CHECK-NEXT:    .cfi_offset %r13, -5649; CHECK-NEXT:    .cfi_offset %r14, -4850; CHECK-NEXT:    .cfi_offset %r15, -4051; CHECK-NEXT:    aghi %r15, -16052; CHECK-NEXT:    .cfi_def_cfa_offset 32053; CHECK-NEXT:    lr %r13, %r254; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT55; CHECK-NEXT:    ltebr %f0, %f056; CHECK-NEXT:    lochinl %r13, 057; CHECK-NEXT:    lr %r2, %r1358; CHECK-NEXT:    lmg %r13, %r15, 264(%r15)59; CHECK-NEXT:    br %r1460entry:61  %cmp = fcmp olt half %Arg0, 0xH000062  %cond = select i1 %cmp, i32 %Arg1, i32 063  ret i32 %cond64}65 66; icmp i32; select half67define half @fun2(i32 %Arg0, half %Arg1) {68; CHECK-LABEL: fun2:69; CHECK:       # %bb.0: # %entry70; CHECK-NEXT:    stmg %r13, %r15, 104(%r15)71; CHECK-NEXT:    .cfi_offset %r13, -5672; CHECK-NEXT:    .cfi_offset %r14, -4873; CHECK-NEXT:    .cfi_offset %r15, -4074; CHECK-NEXT:    aghi %r15, -16075; CHECK-NEXT:    .cfi_def_cfa_offset 32076; CHECK-NEXT:    lr %r13, %r277; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT78; CHECK-NEXT:    # kill: def $f0s killed $f0s def $v079; CHECK-NEXT:    cije %r13, 0, .LBB2_280; CHECK-NEXT:  # %bb.1: # %entry81; CHECK-NEXT:    vgmf %v0, 2, 882; CHECK-NEXT:  .LBB2_2: # %entry83; CHECK-NEXT:    # kill: def $f0s killed $f0s killed $v084; CHECK-NEXT:    brasl %r14, __truncsfhf2@PLT85; CHECK-NEXT:    lmg %r13, %r15, 264(%r15)86; CHECK-NEXT:    br %r1487entry:88  %cmp = icmp eq i32 %Arg0, 089  %cond = select i1 %cmp, half %Arg1, half 1.090  ret half %cond91}92 93define i64 @fun3(i64 %a, i64 %b, half %f1, half %f2) #0 {94; CHECK-LABEL: fun3:95; CHECK:       # %bb.0:96; CHECK-NEXT:    stmg %r12, %r15, 96(%r15)97; CHECK-NEXT:    .cfi_offset %r12, -6498; CHECK-NEXT:    .cfi_offset %r13, -5699; CHECK-NEXT:    .cfi_offset %r14, -48100; CHECK-NEXT:    .cfi_offset %r15, -40101; CHECK-NEXT:    aghi %r15, -176102; CHECK-NEXT:    .cfi_def_cfa_offset 336103; CHECK-NEXT:    std %f8, 168(%r15) # 8-byte Spill104; CHECK-NEXT:    std %f9, 160(%r15) # 8-byte Spill105; CHECK-NEXT:    .cfi_offset %f8, -168106; CHECK-NEXT:    .cfi_offset %f9, -176107; CHECK-NEXT:    ldr %f8, %f0108; CHECK-NEXT:    ldr %f0, %f2109; CHECK-NEXT:    lgr %r13, %r3110; CHECK-NEXT:    lgr %r12, %r2111; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT112; CHECK-NEXT:    ldr %f9, %f0113; CHECK-NEXT:    ldr %f0, %f8114; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT115; CHECK-NEXT:    cebr %f0, %f9116; CHECK-NEXT:    ld %f8, 168(%r15) # 8-byte Reload117; CHECK-NEXT:    ld %f9, 160(%r15) # 8-byte Reload118; CHECK-NEXT:    selgre %r2, %r12, %r13119; CHECK-NEXT:    lmg %r12, %r15, 272(%r15)120; CHECK-NEXT:    br %r14121  %cond = call i1 @llvm.experimental.constrained.fcmp.f32(122                                               half %f1, half %f2,123                                               metadata !"oeq",124                                               metadata !"fpexcept.strict") #0125  %res = select i1 %cond, i64 %a, i64 %b126  ret i64 %res127}128 129define half @fun4(half %Arg0, ptr %Dst) {130; CHECK-LABEL: fun4:131; CHECK:       # %bb.0: # %entry132; CHECK-NEXT:    stmg %r13, %r15, 104(%r15)133; CHECK-NEXT:    .cfi_offset %r13, -56134; CHECK-NEXT:    .cfi_offset %r14, -48135; CHECK-NEXT:    .cfi_offset %r15, -40136; CHECK-NEXT:    aghi %r15, -160137; CHECK-NEXT:    .cfi_def_cfa_offset 320138; CHECK-NEXT:    lgr %r13, %r2139; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT140; CHECK-NEXT:    ltebr %f0, %f0141; CHECK-NEXT:    je .LBB4_2142; CHECK-NEXT:  # %bb.1: # %store143; CHECK-NEXT:    lzer %f0144; CHECK-NEXT:    vsteh %v0, 0(%r13), 0145; CHECK-NEXT:  .LBB4_2: # %exit146; CHECK-NEXT:    lzer %f0147; CHECK-NEXT:    lmg %r13, %r15, 264(%r15)148; CHECK-NEXT:    br %r14149entry:150  %cmp = fcmp oeq half %Arg0, 0.0151  br i1 %cmp, label %exit, label %store152 153store:154  store half 0.0, ptr %Dst155  br label %exit156 157exit:158  ret half 0.0159}160 161declare i1 @llvm.experimental.constrained.fcmp.f32(half, half, metadata, metadata)162