71 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; Test three-operand shifts.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 | FileCheck %s5 6; Check that we use SLLK over SLL where useful.7define i32 @f1(i32 %a, i32 %b, i32 %amt) {8; CHECK-LABEL: f1:9; CHECK: # %bb.0:10; CHECK-NEXT: sllk %r2, %r3, 15(%r4)11; CHECK-NEXT: br %r1412 %add = add i32 %amt, 1513 %shift = shl i32 %b, %add14 ret i32 %shift15}16 17; Check that we use SLL over SLLK where possible.18define i32 @f2(i32 %a, i32 %amt) {19; CHECK-LABEL: f2:20; CHECK: # %bb.0:21; CHECK-NEXT: sll %r2, 15(%r3)22; CHECK-NEXT: br %r1423 %add = add i32 %amt, 1524 %shift = shl i32 %a, %add25 ret i32 %shift26}27 28; Check that we use SRLK over SRL where useful.29define i32 @f3(i32 %a, i32 %b, i32 %amt) {30; CHECK-LABEL: f3:31; CHECK: # %bb.0:32; CHECK-NEXT: srlk %r2, %r3, 15(%r4)33; CHECK-NEXT: br %r1434 %add = add i32 %amt, 1535 %shift = lshr i32 %b, %add36 ret i32 %shift37}38 39; Check that we use SRL over SRLK where possible.40define i32 @f4(i32 %a, i32 %amt) {41; CHECK-LABEL: f4:42; CHECK: # %bb.0:43; CHECK-NEXT: srl %r2, 15(%r3)44; CHECK-NEXT: br %r1445 %add = add i32 %amt, 1546 %shift = lshr i32 %a, %add47 ret i32 %shift48}49 50; Check that we use SRAK over SRA where useful.51define i32 @f5(i32 %a, i32 %b, i32 %amt) {52; CHECK-LABEL: f5:53; CHECK: # %bb.0:54; CHECK-NEXT: srak %r2, %r3, 15(%r4)55; CHECK-NEXT: br %r1456 %add = add i32 %amt, 1557 %shift = ashr i32 %b, %add58 ret i32 %shift59}60 61; Check that we use SRA over SRAK where possible.62define i32 @f6(i32 %a, i32 %amt) {63; CHECK-LABEL: f6:64; CHECK: # %bb.0:65; CHECK-NEXT: sra %r2, 15(%r3)66; CHECK-NEXT: br %r1467 %add = add i32 %amt, 1568 %shift = ashr i32 %a, %add69 ret i32 %shift70}71