1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s 3 4; mask 0xFFFFFFFE 5define i32 @test1(i32 %a) { 6; CHECK-LABEL: test1: 7; CHECK: # %bb.0: 8; CHECK-NEXT: rlwinm 3, 3, 0, 0, 30 9; CHECK-NEXT: blr 10 %and = and i32 %a, -2 11 ret i32 %and 12} 13 14; mask 0xFFFFFFFFFFFFFFF9 15define i64 @test2(i64 %a) { 16; CHECK-LABEL: test2: 17; CHECK: # %bb.0: 18; CHECK-NEXT: rldicl 3, 3, 61, 2 19; CHECK-NEXT: rotldi 3, 3, 3 20; CHECK-NEXT: blr 21 %and = and i64 %a, -7 22 ret i64 %and 23} 24 25; mask: 0xFFFFFFC00000 26define i64 @test3(i64 %a) { 27; CHECK-LABEL: test3: 28; CHECK: # %bb.0: 29; CHECK-NEXT: rldicl 3, 3, 42, 22 30; CHECK-NEXT: rldicl 3, 3, 22, 16 31; CHECK-NEXT: blr 32 %and = and i64 %a, 281474972516352 33 ret i64 %and 34} 35 36; mask: 0xC000000FF 37define i64 @test4(i64 %a) { 38; CHECK-LABEL: test4: 39; CHECK: # %bb.0: 40; CHECK-NEXT: rldicl 3, 3, 30, 26 41; CHECK-NEXT: rldicl 3, 3, 34, 28 42; CHECK-NEXT: blr 43 %and = and i64 %a, 51539607807 44 ret i64 %and 45} 46 47; mask: 0xFFC0FFFF 48define i64 @test5(i64 %a) { 49; CHECK-LABEL: test5: 50; CHECK: # %bb.0: 51; CHECK-NEXT: rldicl 3, 3, 42, 6 52; CHECK-NEXT: rldicl 3, 3, 22, 32 53; CHECK-NEXT: blr 54 %and = and i64 %a, 4290838527 55 ret i64 %and 56} 57 58; mask: 0x3FC0FFE0 59define i64 @test6(i64 %a) { 60; CHECK-LABEL: test6: 61; CHECK: # %bb.0: 62; CHECK-NEXT: lis 4, 16320 63; CHECK-NEXT: ori 4, 4, 65504 64; CHECK-NEXT: and 3, 3, 4 65; CHECK-NEXT: blr 66 %and = and i64 %a, 1069613024 67 ret i64 %and 68} 69 70; mask: 0x3FC000001FFFF 71define i64 @test7(i64 %a) { 72; CHECK-LABEL: test7: 73; CHECK: # %bb.0: 74; CHECK-NEXT: rldicl 3, 3, 22, 25 75; CHECK-NEXT: rldicl 3, 3, 42, 14 76; CHECK-NEXT: blr 77 %and = and i64 %a, 1121501860462591 78 ret i64 %and 79} 80