xref: /llvm-project/llvm/test/CodeGen/RISCV/alu32.ll (revision af0ecfccae82ade32581959d61fe86f573d08def)
118ff303bSAlex Bradbury; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
28971842fSAlex Bradbury; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
38971842fSAlex Bradbury; RUN:   | FileCheck %s -check-prefix=RV32I
4bc96a98eSAlex Bradbury; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
5bc96a98eSAlex Bradbury; RUN:   | FileCheck %s -check-prefix=RV64I
68971842fSAlex Bradbury
7919f5fb8SAlex Bradbury; These tests are each targeted at a particular RISC-V ALU instruction. Most
8919f5fb8SAlex Bradbury; other files in this folder exercise LLVM IR instructions that don't directly
9919f5fb8SAlex Bradbury; match a RISC-V instruction.
10ffc435e9SAlex Bradbury
11bc96a98eSAlex Bradbury; Register-immediate instructions.
12bc96a98eSAlex Bradbury
138971842fSAlex Bradburydefine i32 @addi(i32 %a) nounwind {
148971842fSAlex Bradbury; RV32I-LABEL: addi:
1525528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
1618ff303bSAlex Bradbury; RV32I-NEXT:    addi a0, a0, 1
1759136ffaSAlex Bradbury; RV32I-NEXT:    ret
18bc96a98eSAlex Bradbury;
19bc96a98eSAlex Bradbury; RV64I-LABEL: addi:
20bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
216d7ea597SCraig Topper; RV64I-NEXT:    addiw a0, a0, 1
22bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
238971842fSAlex Bradbury  %1 = add i32 %a, 1
248971842fSAlex Bradbury  ret i32 %1
258971842fSAlex Bradbury}
268971842fSAlex Bradbury
278971842fSAlex Bradburydefine i32 @slti(i32 %a) nounwind {
288971842fSAlex Bradbury; RV32I-LABEL: slti:
2925528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
3018ff303bSAlex Bradbury; RV32I-NEXT:    slti a0, a0, 2
3159136ffaSAlex Bradbury; RV32I-NEXT:    ret
32bc96a98eSAlex Bradbury;
33bc96a98eSAlex Bradbury; RV64I-LABEL: slti:
34bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
35bc96a98eSAlex Bradbury; RV64I-NEXT:    sext.w a0, a0
36bc96a98eSAlex Bradbury; RV64I-NEXT:    slti a0, a0, 2
37bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
388971842fSAlex Bradbury  %1 = icmp slt i32 %a, 2
398971842fSAlex Bradbury  %2 = zext i1 %1 to i32
408971842fSAlex Bradbury  ret i32 %2
418971842fSAlex Bradbury}
428971842fSAlex Bradbury
438971842fSAlex Bradburydefine i32 @sltiu(i32 %a) nounwind {
448971842fSAlex Bradbury; RV32I-LABEL: sltiu:
4525528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
4618ff303bSAlex Bradbury; RV32I-NEXT:    sltiu a0, a0, 3
4759136ffaSAlex Bradbury; RV32I-NEXT:    ret
48bc96a98eSAlex Bradbury;
49bc96a98eSAlex Bradbury; RV64I-LABEL: sltiu:
50bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
51e0e62e97SAlex Bradbury; RV64I-NEXT:    sext.w a0, a0
52bc96a98eSAlex Bradbury; RV64I-NEXT:    sltiu a0, a0, 3
53bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
548971842fSAlex Bradbury  %1 = icmp ult i32 %a, 3
558971842fSAlex Bradbury  %2 = zext i1 %1 to i32
568971842fSAlex Bradbury  ret i32 %2
578971842fSAlex Bradbury}
588971842fSAlex Bradbury
598971842fSAlex Bradburydefine i32 @xori(i32 %a) nounwind {
608971842fSAlex Bradbury; RV32I-LABEL: xori:
6125528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
6218ff303bSAlex Bradbury; RV32I-NEXT:    xori a0, a0, 4
6359136ffaSAlex Bradbury; RV32I-NEXT:    ret
64bc96a98eSAlex Bradbury;
65bc96a98eSAlex Bradbury; RV64I-LABEL: xori:
66bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
67bc96a98eSAlex Bradbury; RV64I-NEXT:    xori a0, a0, 4
68bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
698971842fSAlex Bradbury  %1 = xor i32 %a, 4
708971842fSAlex Bradbury  ret i32 %1
718971842fSAlex Bradbury}
728971842fSAlex Bradbury
738971842fSAlex Bradburydefine i32 @ori(i32 %a) nounwind {
748971842fSAlex Bradbury; RV32I-LABEL: ori:
7525528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
7618ff303bSAlex Bradbury; RV32I-NEXT:    ori a0, a0, 5
7759136ffaSAlex Bradbury; RV32I-NEXT:    ret
78bc96a98eSAlex Bradbury;
79bc96a98eSAlex Bradbury; RV64I-LABEL: ori:
80bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
81bc96a98eSAlex Bradbury; RV64I-NEXT:    ori a0, a0, 5
82bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
838971842fSAlex Bradbury  %1 = or i32 %a, 5
848971842fSAlex Bradbury  ret i32 %1
858971842fSAlex Bradbury}
868971842fSAlex Bradbury
878971842fSAlex Bradburydefine i32 @andi(i32 %a) nounwind {
888971842fSAlex Bradbury; RV32I-LABEL: andi:
8925528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
9018ff303bSAlex Bradbury; RV32I-NEXT:    andi a0, a0, 6
9159136ffaSAlex Bradbury; RV32I-NEXT:    ret
92bc96a98eSAlex Bradbury;
93bc96a98eSAlex Bradbury; RV64I-LABEL: andi:
94bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
95bc96a98eSAlex Bradbury; RV64I-NEXT:    andi a0, a0, 6
96bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
978971842fSAlex Bradbury  %1 = and i32 %a, 6
988971842fSAlex Bradbury  ret i32 %1
998971842fSAlex Bradbury}
1008971842fSAlex Bradbury
1018971842fSAlex Bradburydefine i32 @slli(i32 %a) nounwind {
1028971842fSAlex Bradbury; RV32I-LABEL: slli:
10325528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
10418ff303bSAlex Bradbury; RV32I-NEXT:    slli a0, a0, 7
10559136ffaSAlex Bradbury; RV32I-NEXT:    ret
106bc96a98eSAlex Bradbury;
107bc96a98eSAlex Bradbury; RV64I-LABEL: slli:
108bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
1091b941745SCraig Topper; RV64I-NEXT:    slliw a0, a0, 7
110bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
1118971842fSAlex Bradbury  %1 = shl i32 %a, 7
1128971842fSAlex Bradbury  ret i32 %1
1138971842fSAlex Bradbury}
1148971842fSAlex Bradbury
1158971842fSAlex Bradburydefine i32 @srli(i32 %a) nounwind {
1168971842fSAlex Bradbury; RV32I-LABEL: srli:
11725528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
11818ff303bSAlex Bradbury; RV32I-NEXT:    srli a0, a0, 8
11959136ffaSAlex Bradbury; RV32I-NEXT:    ret
120bc96a98eSAlex Bradbury;
121bc96a98eSAlex Bradbury; RV64I-LABEL: srli:
122bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
123bc96a98eSAlex Bradbury; RV64I-NEXT:    srliw a0, a0, 8
124bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
1258971842fSAlex Bradbury  %1 = lshr i32 %a, 8
1268971842fSAlex Bradbury  ret i32 %1
1278971842fSAlex Bradbury}
1288971842fSAlex Bradbury
129c40cea6fSCraig Topper; This makes sure SimplifyDemandedBits doesn't prevent us from matching SRLIW
130c40cea6fSCraig Topper; on RV64.
13132f6a15dSCraig Topperdefine i32 @srli_demandedbits(i32 %0) {
13232f6a15dSCraig Topper; RV32I-LABEL: srli_demandedbits:
13332f6a15dSCraig Topper; RV32I:       # %bb.0:
13432f6a15dSCraig Topper; RV32I-NEXT:    srli a0, a0, 3
13532f6a15dSCraig Topper; RV32I-NEXT:    ori a0, a0, 1
13632f6a15dSCraig Topper; RV32I-NEXT:    ret
13732f6a15dSCraig Topper;
13832f6a15dSCraig Topper; RV64I-LABEL: srli_demandedbits:
13932f6a15dSCraig Topper; RV64I:       # %bb.0:
140c40cea6fSCraig Topper; RV64I-NEXT:    srliw a0, a0, 3
14132f6a15dSCraig Topper; RV64I-NEXT:    ori a0, a0, 1
14232f6a15dSCraig Topper; RV64I-NEXT:    ret
14332f6a15dSCraig Topper  %2 = lshr i32 %0, 3
14432f6a15dSCraig Topper  %3 = or i32 %2, 1
14532f6a15dSCraig Topper  ret i32 %3
14632f6a15dSCraig Topper}
14732f6a15dSCraig Topper
1488971842fSAlex Bradburydefine i32 @srai(i32 %a) nounwind {
1498971842fSAlex Bradbury; RV32I-LABEL: srai:
15025528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
15118ff303bSAlex Bradbury; RV32I-NEXT:    srai a0, a0, 9
15259136ffaSAlex Bradbury; RV32I-NEXT:    ret
153bc96a98eSAlex Bradbury;
154bc96a98eSAlex Bradbury; RV64I-LABEL: srai:
155bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
156bc96a98eSAlex Bradbury; RV64I-NEXT:    sraiw a0, a0, 9
157bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
1588971842fSAlex Bradbury  %1 = ashr i32 %a, 9
1598971842fSAlex Bradbury  ret i32 %1
1608971842fSAlex Bradbury}
1618971842fSAlex Bradbury
1628971842fSAlex Bradbury; Register-register instructions
1638971842fSAlex Bradbury
1648971842fSAlex Bradburydefine i32 @add(i32 %a, i32 %b) nounwind {
1658971842fSAlex Bradbury; RV32I-LABEL: add:
16625528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
16718ff303bSAlex Bradbury; RV32I-NEXT:    add a0, a0, a1
16859136ffaSAlex Bradbury; RV32I-NEXT:    ret
169bc96a98eSAlex Bradbury;
170bc96a98eSAlex Bradbury; RV64I-LABEL: add:
171bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
172b12056bdSShiva Chen; RV64I-NEXT:    addw a0, a0, a1
173bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
1748971842fSAlex Bradbury  %1 = add i32 %a, %b
1758971842fSAlex Bradbury  ret i32 %1
1768971842fSAlex Bradbury}
1778971842fSAlex Bradbury
1788971842fSAlex Bradburydefine i32 @sub(i32 %a, i32 %b) nounwind {
1798971842fSAlex Bradbury; RV32I-LABEL: sub:
18025528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
18118ff303bSAlex Bradbury; RV32I-NEXT:    sub a0, a0, a1
18259136ffaSAlex Bradbury; RV32I-NEXT:    ret
183bc96a98eSAlex Bradbury;
184bc96a98eSAlex Bradbury; RV64I-LABEL: sub:
185bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
186b12056bdSShiva Chen; RV64I-NEXT:    subw a0, a0, a1
187bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
1888971842fSAlex Bradbury  %1 = sub i32 %a, %b
1898971842fSAlex Bradbury  ret i32 %1
1908971842fSAlex Bradbury}
1918971842fSAlex Bradbury
1926644a611SCraig Topperdefine i32 @sub_negative_constant_lhs(i32 %a) nounwind {
1936644a611SCraig Topper; RV32I-LABEL: sub_negative_constant_lhs:
1946644a611SCraig Topper; RV32I:       # %bb.0:
195*af0ecfccSwangpc; RV32I-NEXT:    li a1, -2
1966644a611SCraig Topper; RV32I-NEXT:    sub a0, a1, a0
1976644a611SCraig Topper; RV32I-NEXT:    ret
1986644a611SCraig Topper;
1996644a611SCraig Topper; RV64I-LABEL: sub_negative_constant_lhs:
2006644a611SCraig Topper; RV64I:       # %bb.0:
201*af0ecfccSwangpc; RV64I-NEXT:    li a1, -2
2026644a611SCraig Topper; RV64I-NEXT:    subw a0, a1, a0
2036644a611SCraig Topper; RV64I-NEXT:    ret
2046644a611SCraig Topper  %1 = sub i32 -2, %a
2056644a611SCraig Topper  ret i32 %1
2066644a611SCraig Topper}
2076644a611SCraig Topper
2088971842fSAlex Bradburydefine i32 @sll(i32 %a, i32 %b) nounwind {
2098971842fSAlex Bradbury; RV32I-LABEL: sll:
21025528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
21118ff303bSAlex Bradbury; RV32I-NEXT:    sll a0, a0, a1
21259136ffaSAlex Bradbury; RV32I-NEXT:    ret
213bc96a98eSAlex Bradbury;
214bc96a98eSAlex Bradbury; RV64I-LABEL: sll:
215bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
216d05eae7aSAlex Bradbury; RV64I-NEXT:    sllw a0, a0, a1
217bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
2188971842fSAlex Bradbury  %1 = shl i32 %a, %b
2198971842fSAlex Bradbury  ret i32 %1
2208971842fSAlex Bradbury}
2218971842fSAlex Bradbury
2226644a611SCraig Topperdefine i32 @sll_negative_constant_lhs(i32 %a) nounwind {
2236644a611SCraig Topper; RV32I-LABEL: sll_negative_constant_lhs:
2246644a611SCraig Topper; RV32I:       # %bb.0:
225*af0ecfccSwangpc; RV32I-NEXT:    li a1, -1
2266644a611SCraig Topper; RV32I-NEXT:    sll a0, a1, a0
2276644a611SCraig Topper; RV32I-NEXT:    ret
2286644a611SCraig Topper;
2296644a611SCraig Topper; RV64I-LABEL: sll_negative_constant_lhs:
2306644a611SCraig Topper; RV64I:       # %bb.0:
231*af0ecfccSwangpc; RV64I-NEXT:    li a1, -1
2326644a611SCraig Topper; RV64I-NEXT:    sllw a0, a1, a0
2336644a611SCraig Topper; RV64I-NEXT:    ret
2346644a611SCraig Topper  %1 = shl i32 -1, %a
2356644a611SCraig Topper  ret i32 %1
2366644a611SCraig Topper}
2376644a611SCraig Topper
2388971842fSAlex Bradburydefine i32 @slt(i32 %a, i32 %b) nounwind {
2398971842fSAlex Bradbury; RV32I-LABEL: slt:
24025528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
24118ff303bSAlex Bradbury; RV32I-NEXT:    slt a0, a0, a1
24259136ffaSAlex Bradbury; RV32I-NEXT:    ret
243bc96a98eSAlex Bradbury;
244bc96a98eSAlex Bradbury; RV64I-LABEL: slt:
245bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
246bc96a98eSAlex Bradbury; RV64I-NEXT:    sext.w a1, a1
247bc96a98eSAlex Bradbury; RV64I-NEXT:    sext.w a0, a0
248bc96a98eSAlex Bradbury; RV64I-NEXT:    slt a0, a0, a1
249bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
2508971842fSAlex Bradbury  %1 = icmp slt i32 %a, %b
2518971842fSAlex Bradbury  %2 = zext i1 %1 to i32
2528971842fSAlex Bradbury  ret i32 %2
2538971842fSAlex Bradbury}
2548971842fSAlex Bradbury
2558971842fSAlex Bradburydefine i32 @sltu(i32 %a, i32 %b) nounwind {
2568971842fSAlex Bradbury; RV32I-LABEL: sltu:
25725528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
25818ff303bSAlex Bradbury; RV32I-NEXT:    sltu a0, a0, a1
25959136ffaSAlex Bradbury; RV32I-NEXT:    ret
260bc96a98eSAlex Bradbury;
261bc96a98eSAlex Bradbury; RV64I-LABEL: sltu:
262bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
263e0e62e97SAlex Bradbury; RV64I-NEXT:    sext.w a1, a1
264e0e62e97SAlex Bradbury; RV64I-NEXT:    sext.w a0, a0
265bc96a98eSAlex Bradbury; RV64I-NEXT:    sltu a0, a0, a1
266bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
2678971842fSAlex Bradbury  %1 = icmp ult i32 %a, %b
2688971842fSAlex Bradbury  %2 = zext i1 %1 to i32
2698971842fSAlex Bradbury  ret i32 %2
2708971842fSAlex Bradbury}
2718971842fSAlex Bradbury
2728971842fSAlex Bradburydefine i32 @xor(i32 %a, i32 %b) nounwind {
2738971842fSAlex Bradbury; RV32I-LABEL: xor:
27425528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
27518ff303bSAlex Bradbury; RV32I-NEXT:    xor a0, a0, a1
27659136ffaSAlex Bradbury; RV32I-NEXT:    ret
277bc96a98eSAlex Bradbury;
278bc96a98eSAlex Bradbury; RV64I-LABEL: xor:
279bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
280bc96a98eSAlex Bradbury; RV64I-NEXT:    xor a0, a0, a1
281bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
2828971842fSAlex Bradbury  %1 = xor i32 %a, %b
2838971842fSAlex Bradbury  ret i32 %1
2848971842fSAlex Bradbury}
2858971842fSAlex Bradbury
2868971842fSAlex Bradburydefine i32 @srl(i32 %a, i32 %b) nounwind {
2878971842fSAlex Bradbury; RV32I-LABEL: srl:
28825528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
28918ff303bSAlex Bradbury; RV32I-NEXT:    srl a0, a0, a1
29059136ffaSAlex Bradbury; RV32I-NEXT:    ret
291bc96a98eSAlex Bradbury;
292bc96a98eSAlex Bradbury; RV64I-LABEL: srl:
293bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
294d05eae7aSAlex Bradbury; RV64I-NEXT:    srlw a0, a0, a1
295bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
2968971842fSAlex Bradbury  %1 = lshr i32 %a, %b
2978971842fSAlex Bradbury  ret i32 %1
2988971842fSAlex Bradbury}
2998971842fSAlex Bradbury
3006644a611SCraig Topperdefine i32 @srl_negative_constant_lhs(i32 %a) nounwind {
3016644a611SCraig Topper; RV32I-LABEL: srl_negative_constant_lhs:
3026644a611SCraig Topper; RV32I:       # %bb.0:
303*af0ecfccSwangpc; RV32I-NEXT:    li a1, -1
3046644a611SCraig Topper; RV32I-NEXT:    srl a0, a1, a0
3056644a611SCraig Topper; RV32I-NEXT:    ret
3066644a611SCraig Topper;
3076644a611SCraig Topper; RV64I-LABEL: srl_negative_constant_lhs:
3086644a611SCraig Topper; RV64I:       # %bb.0:
309*af0ecfccSwangpc; RV64I-NEXT:    li a1, -1
3106644a611SCraig Topper; RV64I-NEXT:    srlw a0, a1, a0
3116644a611SCraig Topper; RV64I-NEXT:    ret
3126644a611SCraig Topper  %1 = lshr i32 -1, %a
3136644a611SCraig Topper  ret i32 %1
3146644a611SCraig Topper}
3156644a611SCraig Topper
3168971842fSAlex Bradburydefine i32 @sra(i32 %a, i32 %b) nounwind {
3178971842fSAlex Bradbury; RV32I-LABEL: sra:
31825528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
31918ff303bSAlex Bradbury; RV32I-NEXT:    sra a0, a0, a1
32059136ffaSAlex Bradbury; RV32I-NEXT:    ret
321bc96a98eSAlex Bradbury;
322bc96a98eSAlex Bradbury; RV64I-LABEL: sra:
323bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
324d05eae7aSAlex Bradbury; RV64I-NEXT:    sraw a0, a0, a1
325bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
3268971842fSAlex Bradbury  %1 = ashr i32 %a, %b
3278971842fSAlex Bradbury  ret i32 %1
3288971842fSAlex Bradbury}
3298971842fSAlex Bradbury
3306644a611SCraig Topperdefine i32 @sra_negative_constant_lhs(i32 %a) nounwind {
3316644a611SCraig Topper; RV32I-LABEL: sra_negative_constant_lhs:
3326644a611SCraig Topper; RV32I:       # %bb.0:
3336644a611SCraig Topper; RV32I-NEXT:    lui a1, 524288
3346644a611SCraig Topper; RV32I-NEXT:    sra a0, a1, a0
3356644a611SCraig Topper; RV32I-NEXT:    ret
3366644a611SCraig Topper;
3376644a611SCraig Topper; RV64I-LABEL: sra_negative_constant_lhs:
3386644a611SCraig Topper; RV64I:       # %bb.0:
33950302febSCraig Topper; RV64I-NEXT:    lui a1, 524288
3406644a611SCraig Topper; RV64I-NEXT:    sraw a0, a1, a0
3416644a611SCraig Topper; RV64I-NEXT:    ret
3426644a611SCraig Topper  %1 = ashr i32 2147483648, %a
3436644a611SCraig Topper  ret i32 %1
3446644a611SCraig Topper}
3456644a611SCraig Topper
3468971842fSAlex Bradburydefine i32 @or(i32 %a, i32 %b) nounwind {
3478971842fSAlex Bradbury; RV32I-LABEL: or:
34825528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
34918ff303bSAlex Bradbury; RV32I-NEXT:    or a0, a0, a1
35059136ffaSAlex Bradbury; RV32I-NEXT:    ret
351bc96a98eSAlex Bradbury;
352bc96a98eSAlex Bradbury; RV64I-LABEL: or:
353bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
354bc96a98eSAlex Bradbury; RV64I-NEXT:    or a0, a0, a1
355bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
3568971842fSAlex Bradbury  %1 = or i32 %a, %b
3578971842fSAlex Bradbury  ret i32 %1
3588971842fSAlex Bradbury}
3598971842fSAlex Bradbury
3608971842fSAlex Bradburydefine i32 @and(i32 %a, i32 %b) nounwind {
3618971842fSAlex Bradbury; RV32I-LABEL: and:
36225528d6dSFrancis Visoiu Mistrih; RV32I:       # %bb.0:
36318ff303bSAlex Bradbury; RV32I-NEXT:    and a0, a0, a1
36459136ffaSAlex Bradbury; RV32I-NEXT:    ret
365bc96a98eSAlex Bradbury;
366bc96a98eSAlex Bradbury; RV64I-LABEL: and:
367bc96a98eSAlex Bradbury; RV64I:       # %bb.0:
368bc96a98eSAlex Bradbury; RV64I-NEXT:    and a0, a0, a1
369bc96a98eSAlex Bradbury; RV64I-NEXT:    ret
3708971842fSAlex Bradbury  %1 = and i32 %a, %b
3718971842fSAlex Bradbury  ret i32 %1
3728971842fSAlex Bradbury}
373