71 lines
1.6 KiB
LLVM
71 lines
1.6 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -mtriple ppc64le-linux -ppc-asm-full-reg-names -global-isel -o - < %s \
|
|
; RUN: | FileCheck %s
|
|
|
|
define i64 @test_andi64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_andi64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: and r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%res = and i64 %a, %b
|
|
ret i64 %res
|
|
}
|
|
|
|
define i64 @test_nandi64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_nandi64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: nand r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%and = and i64 %a, %b
|
|
%neg = xor i64 %and, -1
|
|
ret i64 %neg
|
|
}
|
|
|
|
define i64 @test_andci64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_andci64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: andc r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%neg = xor i64 %b, -1
|
|
%and = and i64 %a, %neg
|
|
ret i64 %and
|
|
}
|
|
|
|
define i64 @test_ori64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_ori64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: or r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%res = or i64 %a, %b
|
|
ret i64 %res
|
|
}
|
|
|
|
define i64 @test_orci64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_orci64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: orc r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%neg = xor i64 %b, -1
|
|
%or = or i64 %a, %neg
|
|
ret i64 %or
|
|
}
|
|
|
|
define i64 @test_nori64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_nori64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: nor r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%or = or i64 %a, %b
|
|
%neg = xor i64 %or, -1
|
|
ret i64 %neg
|
|
}
|
|
|
|
define i64 @test_xori64(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: test_xori64:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: xor r3, r3, r4
|
|
; CHECK-NEXT: blr
|
|
%res = xor i64 %a, %b
|
|
ret i64 %res
|
|
}
|