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