; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s ; RUN: llc -mtriple=powerpc64-ibm-aix-xcoff < %s | FileCheck %s ; mask 0xFFFFFFFE define i32 @test1(i32 %a) { ; CHECK-LABEL: test1: ; CHECK: # %bb.0: ; CHECK-NEXT: rlwinm 3, 3, 0, 0, 30 ; CHECK-NEXT: blr %and = and i32 %a, -2 ret i32 %and } ; mask 0xFFFFFFFFFFFFFFF9 define i64 @test2(i64 %a) { ; CHECK-LABEL: test2: ; CHECK: # %bb.0: ; CHECK-NEXT: rldicl 3, 3, 61, 2 ; CHECK-NEXT: rotldi 3, 3, 3 ; CHECK-NEXT: blr %and = and i64 %a, -7 ret i64 %and } ; mask: 0xFFFFFFC00000 define i64 @test3(i64 %a) { ; CHECK-LABEL: test3: ; CHECK: # %bb.0: ; CHECK-NEXT: rldicl 3, 3, 42, 22 ; CHECK-NEXT: rldicl 3, 3, 22, 16 ; CHECK-NEXT: blr %and = and i64 %a, 281474972516352 ret i64 %and } ; mask: 0xC000000FF define i64 @test4(i64 %a) { ; CHECK-LABEL: test4: ; CHECK: # %bb.0: ; CHECK-NEXT: rldicl 3, 3, 30, 26 ; CHECK-NEXT: rldicl 3, 3, 34, 28 ; CHECK-NEXT: blr %and = and i64 %a, 51539607807 ret i64 %and } ; mask: 0xFFC0FFFF define i64 @test5(i64 %a) { ; CHECK-LABEL: test5: ; CHECK: # %bb.0: ; CHECK-NEXT: rldicl 3, 3, 42, 6 ; CHECK-NEXT: rldicl 3, 3, 22, 32 ; CHECK-NEXT: blr %and = and i64 %a, 4290838527 ret i64 %and } ; mask: 0x3FC0FFE0 define i64 @test6(i64 %a) { ; CHECK-LABEL: test6: ; CHECK: # %bb.0: ; CHECK-NEXT: lis 4, 16320 ; CHECK-NEXT: ori 4, 4, 65504 ; CHECK-NEXT: and 3, 3, 4 ; CHECK-NEXT: blr %and = and i64 %a, 1069613024 ret i64 %and } ; mask: 0x3FC000001FFFF define i64 @test7(i64 %a) { ; CHECK-LABEL: test7: ; CHECK: # %bb.0: ; CHECK-NEXT: rldicl 3, 3, 22, 25 ; CHECK-NEXT: rldicl 3, 3, 42, 14 ; CHECK-NEXT: blr %and = and i64 %a, 1121501860462591 ret i64 %and }