[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / RISCV / rv64zbe-intrinsic.ll
blobc47028514ef1b202f265bc0b44fbd60ddf134e1d
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv64 -mattr=+experimental-zbe -verify-machineinstrs < %s \
3 ; RUN:   | FileCheck %s -check-prefix=RV64ZBE
5 declare i32 @llvm.riscv.bcompress.i32(i32 %a, i32 %b)
7 define signext i32 @bcompress32(i32 signext %a, i32 signext %b) nounwind {
8 ; RV64ZBE-LABEL: bcompress32:
9 ; RV64ZBE:       # %bb.0:
10 ; RV64ZBE-NEXT:    bcompressw a0, a0, a1
11 ; RV64ZBE-NEXT:    ret
12   %tmp = call i32 @llvm.riscv.bcompress.i32(i32 %a, i32 %b)
13   ret i32 %tmp
16 define signext i32 @bcompress32_demandedbits(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
17 ; RV64ZBE-LABEL: bcompress32_demandedbits:
18 ; RV64ZBE:       # %bb.0:
19 ; RV64ZBE-NEXT:    add a0, a0, a1
20 ; RV64ZBE-NEXT:    add a1, a2, a3
21 ; RV64ZBE-NEXT:    bcompressw a0, a0, a1
22 ; RV64ZBE-NEXT:    ret
23   %e = add i32 %a, %b
24   %f = add i32 %c, %d
25   %tmp = call i32 @llvm.riscv.bcompress.i32(i32 %e, i32 %f)
26   ret i32 %tmp
29 declare i32 @llvm.riscv.bdecompress.i32(i32 %a, i32 %b)
31 define signext i32 @bdecompress32(i32 signext %a, i32 signext %b) nounwind {
32 ; RV64ZBE-LABEL: bdecompress32:
33 ; RV64ZBE:       # %bb.0:
34 ; RV64ZBE-NEXT:    bdecompressw a0, a0, a1
35 ; RV64ZBE-NEXT:    ret
36   %tmp = call i32 @llvm.riscv.bdecompress.i32(i32 %a, i32 %b)
37   ret i32 %tmp
40 define signext i32 @bdecompress32_demandedbits(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
41 ; RV64ZBE-LABEL: bdecompress32_demandedbits:
42 ; RV64ZBE:       # %bb.0:
43 ; RV64ZBE-NEXT:    add a0, a0, a1
44 ; RV64ZBE-NEXT:    add a1, a2, a3
45 ; RV64ZBE-NEXT:    bdecompressw a0, a0, a1
46 ; RV64ZBE-NEXT:    ret
47   %e = add i32 %a, %b
48   %f = add i32 %c, %d
49   %tmp = call i32 @llvm.riscv.bdecompress.i32(i32 %e, i32 %f)
50   ret i32 %tmp
53 declare i64 @llvm.riscv.bcompress.i64(i64 %a, i64 %b)
55 define i64 @bcompress64(i64 %a, i64 %b) nounwind {
56 ; RV64ZBE-LABEL: bcompress64:
57 ; RV64ZBE:       # %bb.0:
58 ; RV64ZBE-NEXT:    bcompress a0, a0, a1
59 ; RV64ZBE-NEXT:    ret
60   %tmp = call i64 @llvm.riscv.bcompress.i64(i64 %a, i64 %b)
61   ret i64 %tmp
64 declare i64 @llvm.riscv.bdecompress.i64(i64 %a, i64 %b)
66 define i64 @bdecompress64(i64 %a, i64 %b) nounwind {
67 ; RV64ZBE-LABEL: bdecompress64:
68 ; RV64ZBE:       # %bb.0:
69 ; RV64ZBE-NEXT:    bdecompress a0, a0, a1
70 ; RV64ZBE-NEXT:    ret
71   %tmp = call i64 @llvm.riscv.bdecompress.i64(i64 %a, i64 %b)
72   ret i64 %tmp