[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / CSKY / intrinsic.ll
blob24182f0b50e10f88361fb7529b6c828fa427695c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -csky-no-aliases -mattr=+e2 -mattr=+2e3 < %s -mtriple=csky | FileCheck %s
4 define i32 @ctlz_0(i32 %x) {
5 ; CHECK-LABEL: ctlz_0:
6 ; CHECK:       # %bb.0: # %entry
7 ; CHECK-NEXT:    ff1.32 a0, a0
8 ; CHECK-NEXT:    rts16
9 entry:
10   %nlz = call i32 @llvm.ctlz.i32(i32 %x, i1 0)
11   ret i32 %nlz
14 define i32 @ctlz_1(i32 %x) {
15 ; CHECK-LABEL: ctlz_1:
16 ; CHECK:       # %bb.0: # %entry
17 ; CHECK-NEXT:    ff1.32 a0, a0
18 ; CHECK-NEXT:    rts16
19 entry:
20   %nlz = call i32 @llvm.ctlz.i32(i32 %x, i1 1)
21   ret i32 %nlz
24 define i32 @cttz_0(i32 %x) {
25 ; CHECK-LABEL: cttz_0:
26 ; CHECK:       # %bb.0: # %entry
27 ; CHECK-NEXT:    brev32 a0, a0
28 ; CHECK-NEXT:    ff1.32 a0, a0
29 ; CHECK-NEXT:    rts16
30 entry:
31   %ntz = call i32 @llvm.cttz.i32(i32 %x, i1 0)
32   ret i32 %ntz
35 define i32 @cttz_1(i32 %x) {
36 ; CHECK-LABEL: cttz_1:
37 ; CHECK:       # %bb.0: # %entry
38 ; CHECK-NEXT:    brev32 a0, a0
39 ; CHECK-NEXT:    ff1.32 a0, a0
40 ; CHECK-NEXT:    rts16
41 entry:
42   %ntz = call i32 @llvm.cttz.i32(i32 %x, i1 1)
43   ret i32 %ntz
46 define i32 @bswap(i32 %x) {
47 ; CHECK-LABEL: bswap:
48 ; CHECK:       # %bb.0: # %entry
49 ; CHECK-NEXT:    revb16 a0, a0
50 ; CHECK-NEXT:    rts16
51 entry:
52   %revb32 = call i32 @llvm.bswap.i32(i32 %x)
53   ret i32 %revb32
56 define i16 @bswap16(i16 %x) {
57 ; CHECK-LABEL: bswap16:
58 ; CHECK:       # %bb.0: # %entry
59 ; CHECK-NEXT:    revb16 a0, a0
60 ; CHECK-NEXT:    lsri16 a0, a0, 16
61 ; CHECK-NEXT:    rts16
62 entry:
63   %revb16 = call i16 @llvm.bswap.i16(i16 %x)
64   ret i16 %revb16
67 define i32 @bitreverse_32(i32 %x) {
68 ; CHECK-LABEL: bitreverse_32:
69 ; CHECK:       # %bb.0: # %entry
70 ; CHECK-NEXT:    brev32 a0, a0
71 ; CHECK-NEXT:    rts16
72 entry:
73   %brev32 = call i32 @llvm.bitreverse.i32(i32 %x)
74   ret i32 %brev32
77 define i16 @bitreverse_16(i16 %x) {
78 ; CHECK-LABEL: bitreverse_16:
79 ; CHECK:       # %bb.0: # %entry
80 ; CHECK-NEXT:    brev32 a0, a0
81 ; CHECK-NEXT:    lsri16 a0, a0, 16
82 ; CHECK-NEXT:    rts16
83 entry:
84   %brev = call i16 @llvm.bitreverse.i16(i16 %x)
85   ret i16 %brev
88 declare i32 @llvm.bswap.i32(i32)
89 declare i16 @llvm.bswap.i16(i16)
90 declare i32 @llvm.ctlz.i32 (i32, i1)
91 declare i32 @llvm.cttz.i32 (i32, i1)
92 declare i32 @llvm.bitreverse.i32(i32)
93 declare i16 @llvm.bitreverse.i16(i16)