brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 1e761d4 Raw
84 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=zEC12 -verify-machineinstrs \3; RUN:   | FileCheck %s --check-prefix=NOVEC4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z16 -verify-machineinstrs \5; RUN:   | FileCheck %s  --check-prefix=VECTOR6;7; Test moves (bitcasts) between i16 and half.8 9define half @f1(ptr %ptr) {10; NOVEC-LABEL: f1:11; NOVEC:       # %bb.0:12; NOVEC-NEXT:    lh %r0, 0(%r2)13; NOVEC-NEXT:    oill %r0, 25514; NOVEC-NEXT:    sllg %r0, %r0, 4815; NOVEC-NEXT:    ldgr %f0, %r016; NOVEC-NEXT:    # kill: def $f0h killed $f0h killed $f0d17; NOVEC-NEXT:    br %r1418;19; VECTOR-LABEL: f1:20; VECTOR:       # %bb.0:21; VECTOR-NEXT:    lh %r0, 0(%r2)22; VECTOR-NEXT:    oill %r0, 25523; VECTOR-NEXT:    vlvgh %v0, %r0, 024; VECTOR-NEXT:    br %r1425  %L = load i16, ptr %ptr26  %O = or i16 %L, 25527  %res = bitcast i16 %O to half28  ret half %res29}30 31define half @f2(i16 %Arg) {32; NOVEC-LABEL: f2:33; NOVEC:       # %bb.0:34; NOVEC-NEXT:    # kill: def $r2l killed $r2l def $r2d35; NOVEC-NEXT:    sllg %r0, %r2, 4836; NOVEC-NEXT:    ldgr %f0, %r037; NOVEC-NEXT:    # kill: def $f0h killed $f0h killed $f0d38; NOVEC-NEXT:    br %r1439;40; VECTOR-LABEL: f2:41; VECTOR:       # %bb.0:42; VECTOR-NEXT:    vlvgh %v0, %r2, 043; VECTOR-NEXT:    br %r1444  %res = bitcast i16 %Arg to half45  ret half %res46}47 48define void @f3(half %val, ptr %ptr) {49; NOVEC-LABEL: f3:50; NOVEC:       # %bb.0:51; NOVEC-NEXT:    # kill: def $f0h killed $f0h def $f0d52; NOVEC-NEXT:    lgdr %r0, %f053; NOVEC-NEXT:    srlg %r0, %r0, 4854; NOVEC-NEXT:    stc %r0, 0(%r2)55; NOVEC-NEXT:    br %r1456;57; VECTOR-LABEL: f3:58; VECTOR:       # %bb.0:59; VECTOR-NEXT:    vlgvh %r0, %v0, 060; VECTOR-NEXT:    stc %r0, 0(%r2)61; VECTOR-NEXT:    br %r1462  %res = bitcast half %val to i1663  %trunc = trunc i16 %res to i864  store i8 %trunc, ptr %ptr65  ret void66}67 68define i16 @f4(half %Arg) {69; NOVEC-LABEL: f4:70; NOVEC:       # %bb.0:71; NOVEC-NEXT:    # kill: def $f0h killed $f0h def $f0d72; NOVEC-NEXT:    lgdr %r0, %f073; NOVEC-NEXT:    srlg %r2, %r0, 4874; NOVEC-NEXT:    # kill: def $r2l killed $r2l killed $r2d75; NOVEC-NEXT:    br %r1476;77; VECTOR-LABEL: f4:78; VECTOR:       # %bb.0:79; VECTOR-NEXT:    vlgvh %r2, %v0, 080; VECTOR-NEXT:    br %r1481  %res = bitcast half %Arg to i1682  ret i16 %res83}84