brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 77d6eb1 Raw
102 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2 3; Test f128 to i128 bitcasts.4;5; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \6; RUN:   | FileCheck -check-prefix=Z10 %s7;8; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 \9; RUN:   | FileCheck -check-prefix=Z14 %s10 11define i64 @extract_float_hi(ptr %0, ptr %1) {12; Z10-LABEL: extract_float_hi:13; Z10:       # %bb.0: # %entry14; Z10-NEXT:    ld %f0, 0(%r2)15; Z10-NEXT:    ld %f2, 8(%r2)16; Z10-NEXT:    ld %f1, 0(%r3)17; Z10-NEXT:    ld %f3, 8(%r3)18; Z10-NEXT:    axbr %f1, %f019; Z10-NEXT:    lgdr %r2, %f120; Z10-NEXT:    br %r1421;22; Z14-LABEL: extract_float_hi:23; Z14:       # %bb.0: # %entry24; Z14-NEXT:    vl %v0, 0(%r2), 325; Z14-NEXT:    vl %v1, 0(%r3), 326; Z14-NEXT:    wfaxb %v0, %v0, %v127; Z14-NEXT:    vlgvg %r2, %v0, 028; Z14-NEXT:    br %r1429entry:30  %x = load fp128, ptr %031  %y = load fp128, ptr %132  %add = fadd fp128 %x, %y33  %2 = bitcast fp128 %add to i12834  %u.sroa.0.0.extract.shift = lshr i128 %2, 6435  %u.sroa.0.0.extract.trunc = trunc i128 %u.sroa.0.0.extract.shift to i6436  ret i64 %u.sroa.0.0.extract.trunc37}38 39define i64 @extract_float_lo(ptr %0, ptr %1) {40; Z10-LABEL: extract_float_lo:41; Z10:       # %bb.0: # %entry42; Z10-NEXT:    ld %f0, 0(%r2)43; Z10-NEXT:    ld %f2, 8(%r2)44; Z10-NEXT:    ld %f1, 0(%r3)45; Z10-NEXT:    ld %f3, 8(%r3)46; Z10-NEXT:    axbr %f1, %f047; Z10-NEXT:    lgdr %r2, %f348; Z10-NEXT:    br %r1449;50; Z14-LABEL: extract_float_lo:51; Z14:       # %bb.0: # %entry52; Z14-NEXT:    vl %v0, 0(%r2), 353; Z14-NEXT:    vl %v1, 0(%r3), 354; Z14-NEXT:    wfaxb %v0, %v0, %v155; Z14-NEXT:    vlgvg %r2, %v0, 156; Z14-NEXT:    br %r1457entry:58  %x = load fp128, ptr %059  %y = load fp128, ptr %160  %add = fadd fp128 %x, %y61  %2 = bitcast fp128 %add to i12862  %u.sroa.0.0.extract.trunc = trunc i128 %2 to i6463  ret i64 %u.sroa.0.0.extract.trunc64}65 66define i128 @bitcast_128(ptr %0, ptr %1) {67; Z10-LABEL: bitcast_128:68; Z10:       # %bb.0: # %entry69; Z10-NEXT:    ld %f0, 0(%r3)70; Z10-NEXT:    ld %f2, 8(%r3)71; Z10-NEXT:    ld %f1, 0(%r4)72; Z10-NEXT:    ld %f3, 8(%r4)73; Z10-NEXT:    axbr %f1, %f074; Z10-NEXT:    lgdr %r0, %f375; Z10-NEXT:    lgdr %r1, %f176; Z10-NEXT:    oill %r1, 177; Z10-NEXT:    oill %r0, 378; Z10-NEXT:    stg %r0, 8(%r2)79; Z10-NEXT:    stg %r1, 0(%r2)80; Z10-NEXT:    br %r1481;82; Z14-LABEL: bitcast_128:83; Z14:       # %bb.0: # %entry84; Z14-NEXT:    vl %v0, 0(%r3), 385; Z14-NEXT:    vl %v1, 0(%r4), 386; Z14-NEXT:    wfaxb %v0, %v0, %v187; Z14-NEXT:    larl %r1, .LCPI2_088; Z14-NEXT:    vl %v1, 0(%r1), 389; Z14-NEXT:    vo %v0, %v0, %v190; Z14-NEXT:    vst %v0, 0(%r2), 391; Z14-NEXT:    br %r1492entry:93  %x = load fp128, ptr %094  %y = load fp128, ptr %195  %add = fadd fp128 %x, %y96  %i = bitcast fp128 %add to i12897  %hibit = shl i128 1, 6498  %i2 = or i128 %i, %hibit99  %i3 = or i128 %i2, 3100  ret i128 %i3101}102