84 lines
2.4 KiB
LLVM
84 lines
2.4 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc --mtriple=loongarch64 < %s | FileCheck %s
|
|
|
|
declare i32 @llvm.loongarch.crc.w.b.w(i32, i32)
|
|
declare i32 @llvm.loongarch.crc.w.h.w(i32, i32)
|
|
declare i32 @llvm.loongarch.crc.w.w.w(i32, i32)
|
|
declare i32 @llvm.loongarch.crc.w.d.w(i64, i32)
|
|
declare i32 @llvm.loongarch.crcc.w.b.w(i32, i32)
|
|
declare i32 @llvm.loongarch.crcc.w.h.w(i32, i32)
|
|
declare i32 @llvm.loongarch.crcc.w.w.w(i32, i32)
|
|
declare i32 @llvm.loongarch.crcc.w.d.w(i64, i32)
|
|
|
|
define i32 @crc_w_b_w(i32 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crc_w_b_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crc.w.b.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crc.w.b.w(i32 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crc_w_h_w(i32 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crc_w_h_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crc.w.h.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crc.w.h.w(i32 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crc_w_w_w(i32 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crc_w_w_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crc.w.w.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crc.w.w.w(i32 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crc_w_d_w(i64 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crc_w_d_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crc.w.d.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crc.w.d.w(i64 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crcc_w_b_w(i32 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crcc_w_b_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crcc.w.b.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crcc.w.b.w(i32 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crcc_w_h_w(i32 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crcc_w_h_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crcc.w.h.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crcc.w.h.w(i32 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crcc_w_w_w(i32 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crcc_w_w_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crcc.w.w.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crcc.w.w.w(i32 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|
|
|
|
define i32 @crcc_w_d_w(i64 %a, i32 %b) nounwind {
|
|
; CHECK-LABEL: crcc_w_d_w:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: crcc.w.d.w $a0, $a0, $a1
|
|
; CHECK-NEXT: ret
|
|
%res = call i32 @llvm.loongarch.crcc.w.d.w(i64 %a, i32 %b)
|
|
ret i32 %res
|
|
}
|