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