158 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s3 4define i32 @test1(i32 %x, i32 %y) {5; CHECK-LABEL: test1:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: rlwimi 4, 3, 16, 0, 158; CHECK-NEXT: mr 3, 49; CHECK-NEXT: blr10entry:11 %tmp.3 = shl i32 %x, 1612 %tmp.7 = and i32 %y, 6553513 %tmp.9 = or i32 %tmp.7, %tmp.314 ret i32 %tmp.915}16 17define i32 @test2(i32 %x, i32 %y) {18; CHECK-LABEL: test2:19; CHECK: # %bb.0: # %entry20; CHECK-NEXT: rlwimi 3, 4, 16, 0, 1521; CHECK-NEXT: blr22entry:23 %tmp.7 = and i32 %x, 6553524 %tmp.3 = shl i32 %y, 1625 %tmp.9 = or i32 %tmp.7, %tmp.326 ret i32 %tmp.927}28 29define i32 @test3(i32 %x, i32 %y) {30; CHECK-LABEL: test3:31; CHECK: # %bb.0: # %entry32; CHECK-NEXT: rlwimi 4, 3, 16, 16, 3133; CHECK-NEXT: mr 3, 434; CHECK-NEXT: blr35entry:36 %tmp.3 = lshr i32 %x, 1637 %tmp.6 = and i32 %y, -6553638 %tmp.7 = or i32 %tmp.6, %tmp.339 ret i32 %tmp.740}41 42define i32 @test4(i32 %x, i32 %y) {43; CHECK-LABEL: test4:44; CHECK: # %bb.0: # %entry45; CHECK-NEXT: rlwimi 3, 4, 16, 16, 3146; CHECK-NEXT: blr47entry:48 %tmp.6 = and i32 %x, -6553649 %tmp.3 = lshr i32 %y, 1650 %tmp.7 = or i32 %tmp.6, %tmp.351 ret i32 %tmp.752}53 54define i32 @test5(i32 %x, i32 %y) {55; CHECK-LABEL: test5:56; CHECK: # %bb.0: # %entry57; CHECK-NEXT: rlwimi 4, 3, 1, 0, 1558; CHECK-NEXT: mr 3, 459; CHECK-NEXT: blr60entry:61 %tmp.3 = shl i32 %x, 162 %tmp.4 = and i32 %tmp.3, -6553663 %tmp.7 = and i32 %y, 6553564 %tmp.9 = or i32 %tmp.4, %tmp.765 ret i32 %tmp.966}67 68define i32 @test6(i32 %x, i32 %y) {69; CHECK-LABEL: test6:70; CHECK: # %bb.0: # %entry71; CHECK-NEXT: rlwimi 3, 4, 1, 0, 1572; CHECK-NEXT: blr73entry:74 %tmp.7 = and i32 %x, 6553575 %tmp.3 = shl i32 %y, 176 %tmp.4 = and i32 %tmp.3, -6553677 %tmp.9 = or i32 %tmp.4, %tmp.778 ret i32 %tmp.979}80 81define i32 @test7(i32 %x, i32 %y) {82; CHECK-LABEL: test7:83; CHECK: # %bb.0: # %entry84; CHECK-NEXT: andis. 3, 3, 6553585; CHECK-NEXT: rldimi 3, 4, 0, 4886; CHECK-NEXT: blr87entry:88 %tmp.2 = and i32 %x, -6553689 %tmp.5 = and i32 %y, 6553590 %tmp.7 = or i32 %tmp.5, %tmp.291 ret i32 %tmp.792}93 94define i32 @test8(i32 %bar) {95; CHECK-LABEL: test8:96; CHECK: # %bb.0: # %entry97; CHECK-NEXT: rlwimi 3, 3, 1, 30, 3098; CHECK-NEXT: blr99entry:100 %tmp.3 = shl i32 %bar, 1101 %tmp.4 = and i32 %tmp.3, 2102 %tmp.6 = and i32 %bar, -3103 %tmp.7 = or i32 %tmp.4, %tmp.6104 ret i32 %tmp.7105}106 107define i32 @test9(i32 %a, i32 %b) {108; CHECK-LABEL: test9:109; CHECK: # %bb.0: # %entry110; CHECK-NEXT: rlwimi 4, 3, 8, 20, 26111; CHECK-NEXT: mr 3, 4112; CHECK-NEXT: blr113entry:114 %r = call i32 @llvm.ppc.rlwimi(i32 %a, i32 %b, i32 8, i32 4064)115 ret i32 %r116}117 118define i32 @test10(i32 %a, i32 %b) {119; CHECK-LABEL: test10:120; CHECK: # %bb.0: # %entry121; CHECK-NEXT: blr122entry:123 %r = call i32 @llvm.ppc.rlwimi(i32 %a, i32 %b, i32 0, i32 -1)124 ret i32 %r125}126 127define i32 @test11(i32 %a, i32 %b) {128; CHECK-LABEL: test11:129; CHECK: # %bb.0: # %entry130; CHECK-NEXT: rotlwi 3, 3, 8131; CHECK-NEXT: blr132entry:133 %r = call i32 @llvm.ppc.rlwimi(i32 %a, i32 %b, i32 8, i32 -1)134 ret i32 %r135}136 137define i32 @test12(i32 %a, i32 %b) {138; CHECK-LABEL: test12:139; CHECK: # %bb.0: # %entry140; CHECK-NEXT: mr 3, 4141; CHECK-NEXT: blr142entry:143 %r = call i32 @llvm.ppc.rlwimi(i32 %a, i32 %b, i32 0, i32 0)144 ret i32 %r145}146 147define i32 @test13(i32 %a, i32 %b) {148; CHECK-LABEL: test13:149; CHECK: # %bb.0: # %entry150; CHECK-NEXT: rlwimi 3, 4, 0, 27, 19151; CHECK-NEXT: blr152entry:153 %r = call i32 @llvm.ppc.rlwimi(i32 %a, i32 %b, i32 0, i32 4064)154 ret i32 %r155}156 157declare i32 @llvm.ppc.rlwimi(i32, i32, i32 immarg, i32 immarg)158