brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · d81c354 Raw
139 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; Test that 256-bit shifts still work when i128 is a legal type3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s5 6; Shift left.7define i256 @f1(i256 %a, i256 %sh) {8; CHECK-LABEL: f1:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vl %v1, 16(%r3), 311; CHECK-NEXT:    vl %v0, 0(%r3), 312; CHECK-NEXT:    l %r0, 28(%r4)13; CHECK-NEXT:    clijhe %r0, 128, .LBB0_214; CHECK-NEXT:  # %bb.1:15; CHECK-NEXT:    lr %r1, %r016; CHECK-NEXT:    xilf %r1, 429496729517; CHECK-NEXT:    vlvgp %v2, %r0, %r018; CHECK-NEXT:    vlvgp %v5, %r1, %r119; CHECK-NEXT:    vrepib %v4, 120; CHECK-NEXT:    vrepb %v3, %v2, 1521; CHECK-NEXT:    vsrl %v4, %v1, %v422; CHECK-NEXT:    vrepb %v5, %v5, 1523; CHECK-NEXT:    vslb %v2, %v0, %v324; CHECK-NEXT:    vsrlb %v4, %v4, %v525; CHECK-NEXT:    vslb %v1, %v1, %v326; CHECK-NEXT:    vsl %v2, %v2, %v327; CHECK-NEXT:    vsrl %v4, %v4, %v528; CHECK-NEXT:    vo %v2, %v2, %v429; CHECK-NEXT:    vsl %v1, %v1, %v330; CHECK-NEXT:    cijlh %r0, 0, .LBB0_331; CHECK-NEXT:    j .LBB0_432; CHECK-NEXT:  .LBB0_2:33; CHECK-NEXT:    ahik %r1, %r0, -12834; CHECK-NEXT:    vlvgp %v2, %r1, %r135; CHECK-NEXT:    vrepb %v2, %v2, 1536; CHECK-NEXT:    vslb %v1, %v1, %v237; CHECK-NEXT:    vsl %v2, %v1, %v238; CHECK-NEXT:    vgbm %v1, 039; CHECK-NEXT:    cije %r0, 0, .LBB0_440; CHECK-NEXT:  .LBB0_3:41; CHECK-NEXT:    vlr %v0, %v242; CHECK-NEXT:  .LBB0_4:43; CHECK-NEXT:    vst %v1, 16(%r2), 344; CHECK-NEXT:    vst %v0, 0(%r2), 345; CHECK-NEXT:    br %r1446  %res = shl i256 %a, %sh47  ret i256 %res48}49 50; Shift right logical.51define i256 @f2(i256 %a, i256 %sh) {52; CHECK-LABEL: f2:53; CHECK:       # %bb.0:54; CHECK-NEXT:    vl %v1, 0(%r3), 355; CHECK-NEXT:    vl %v0, 16(%r3), 356; CHECK-NEXT:    l %r0, 28(%r4)57; CHECK-NEXT:    clijhe %r0, 128, .LBB1_258; CHECK-NEXT:  # %bb.1:59; CHECK-NEXT:    lr %r1, %r060; CHECK-NEXT:    xilf %r1, 429496729561; CHECK-NEXT:    vlvgp %v2, %r0, %r062; CHECK-NEXT:    vlvgp %v5, %r1, %r163; CHECK-NEXT:    vrepib %v4, 164; CHECK-NEXT:    vrepb %v3, %v2, 1565; CHECK-NEXT:    vsl %v4, %v1, %v466; CHECK-NEXT:    vrepb %v5, %v5, 1567; CHECK-NEXT:    vsrlb %v2, %v0, %v368; CHECK-NEXT:    vslb %v4, %v4, %v569; CHECK-NEXT:    vsrlb %v1, %v1, %v370; CHECK-NEXT:    vsrl %v2, %v2, %v371; CHECK-NEXT:    vsl %v4, %v4, %v572; CHECK-NEXT:    vo %v2, %v4, %v273; CHECK-NEXT:    vsrl %v1, %v1, %v374; CHECK-NEXT:    cijlh %r0, 0, .LBB1_375; CHECK-NEXT:    j .LBB1_476; CHECK-NEXT:  .LBB1_2:77; CHECK-NEXT:    ahik %r1, %r0, -12878; CHECK-NEXT:    vlvgp %v2, %r1, %r179; CHECK-NEXT:    vrepb %v2, %v2, 1580; CHECK-NEXT:    vsrlb %v1, %v1, %v281; CHECK-NEXT:    vsrl %v2, %v1, %v282; CHECK-NEXT:    vgbm %v1, 083; CHECK-NEXT:    cije %r0, 0, .LBB1_484; CHECK-NEXT:  .LBB1_3:85; CHECK-NEXT:    vlr %v0, %v286; CHECK-NEXT:  .LBB1_4:87; CHECK-NEXT:    vst %v1, 0(%r2), 388; CHECK-NEXT:    vst %v0, 16(%r2), 389; CHECK-NEXT:    br %r1490  %res = lshr i256 %a, %sh91  ret i256 %res92}93 94; Shift right arithmetic.95define i256 @f3(i256 %a, i256 %sh) {96; CHECK-LABEL: f3:97; CHECK:       # %bb.0:98; CHECK-NEXT:    vl %v0, 16(%r3), 399; CHECK-NEXT:    l %r0, 28(%r4)100; CHECK-NEXT:    vl %v2, 0(%r3), 3101; CHECK-NEXT:    clijhe %r0, 128, .LBB2_2102; CHECK-NEXT:  # %bb.1:103; CHECK-NEXT:    vlvgp %v1, %r0, %r0104; CHECK-NEXT:    vrepb %v3, %v1, 15105; CHECK-NEXT:    vsrab %v1, %v2, %v3106; CHECK-NEXT:    vsrlb %v4, %v0, %v3107; CHECK-NEXT:    vsra %v1, %v1, %v3108; CHECK-NEXT:    lr %r1, %r0109; CHECK-NEXT:    vsrl %v3, %v4, %v3110; CHECK-NEXT:    vrepib %v4, 1111; CHECK-NEXT:    xilf %r1, 4294967295112; CHECK-NEXT:    vsl %v2, %v2, %v4113; CHECK-NEXT:    vlvgp %v4, %r1, %r1114; CHECK-NEXT:    vrepb %v4, %v4, 15115; CHECK-NEXT:    vslb %v2, %v2, %v4116; CHECK-NEXT:    vsl %v2, %v2, %v4117; CHECK-NEXT:    vo %v2, %v2, %v3118; CHECK-NEXT:    cijlh %r0, 0, .LBB2_3119; CHECK-NEXT:    j .LBB2_4120; CHECK-NEXT:  .LBB2_2:121; CHECK-NEXT:    vrepib %v1, 127122; CHECK-NEXT:    vsrab %v3, %v2, %v1123; CHECK-NEXT:    ahik %r1, %r0, -128124; CHECK-NEXT:    vsra %v1, %v3, %v1125; CHECK-NEXT:    vlvgp %v3, %r1, %r1126; CHECK-NEXT:    vrepb %v3, %v3, 15127; CHECK-NEXT:    vsrab %v2, %v2, %v3128; CHECK-NEXT:    vsra %v2, %v2, %v3129; CHECK-NEXT:    cije %r0, 0, .LBB2_4130; CHECK-NEXT:  .LBB2_3:131; CHECK-NEXT:    vlr %v0, %v2132; CHECK-NEXT:  .LBB2_4:133; CHECK-NEXT:    vst %v1, 0(%r2), 3134; CHECK-NEXT:    vst %v0, 16(%r2), 3135; CHECK-NEXT:    br %r14136  %res = ashr i256 %a, %sh137  ret i256 %res138}139