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