brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 8f42439 Raw
75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s4 5; Test 128-bit rotate by constant amount.6define i128 @f1(i128 %val) {7; CHECK-LABEL: f1:8; CHECK:       # %bb.0:9; CHECK-NEXT:    vl %v0, 0(%r3), 310; CHECK-NEXT:    vrepib %v1, 10011; CHECK-NEXT:    vsrlb %v2, %v0, %v112; CHECK-NEXT:    vsrl %v1, %v2, %v113; CHECK-NEXT:    vrepib %v2, 2814; CHECK-NEXT:    vslb %v0, %v0, %v215; CHECK-NEXT:    vsl %v0, %v0, %v216; CHECK-NEXT:    vo %v0, %v0, %v117; CHECK-NEXT:    vst %v0, 0(%r2), 318; CHECK-NEXT:    br %r1419 20  %parta = shl i128 %val, 2821  %partb = lshr i128 %val, 10022 23  %rotl = or i128 %parta, %partb24 25  ret i128 %rotl26}27 28; Test 128-bit rotate by constant amount (full bytes).29define i128 @f2(i128 %val) {30; CHECK-LABEL: f2:31; CHECK:       # %bb.0:32; CHECK-NEXT:    vl %v0, 0(%r3), 333; CHECK-NEXT:    vsldb %v0, %v0, %v0, 434; CHECK-NEXT:    vst %v0, 0(%r2), 335; CHECK-NEXT:    br %r1436 37  %parta = shl i128 %val, 3238  %partb = lshr i128 %val, 9639 40  %rotl = or i128 %parta, %partb41 42  ret i128 %rotl43}44 45; Test 128-bit rotate by variable amount.46define i128 @f3(i128 %val, i128 %amt) {47; CHECK-LABEL: f3:48; CHECK:       # %bb.0:49; CHECK-NEXT:    l %r0, 12(%r4)50; CHECK-NEXT:    vlvgp %v1, %r0, %r051; CHECK-NEXT:    vl %v0, 0(%r3), 352; CHECK-NEXT:    vrepb %v1, %v1, 1553; CHECK-NEXT:    vslb %v2, %v0, %v154; CHECK-NEXT:    vsl %v1, %v2, %v155; CHECK-NEXT:    vrepib %v2, 156; CHECK-NEXT:    xilf %r0, 429496729557; CHECK-NEXT:    vsrl %v0, %v0, %v258; CHECK-NEXT:    vlvgp %v2, %r0, %r059; CHECK-NEXT:    vrepb %v2, %v2, 1560; CHECK-NEXT:    vsrlb %v0, %v0, %v261; CHECK-NEXT:    vsrl %v0, %v0, %v262; CHECK-NEXT:    vo %v0, %v1, %v063; CHECK-NEXT:    vst %v0, 0(%r2), 364; CHECK-NEXT:    br %r1465 66  %inv = sub i128 128, %amt67  %parta = shl i128 %val, %amt68  %partb = lshr i128 %val, %inv69 70  %rotl = or i128 %parta, %partb71 72  ret i128 %rotl73}74 75