159 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=-32s,+d < %s | FileCheck %s --check-prefix=LA32R3; RUN: llc --mtriple=loongarch32 -mattr=+32s,+d < %s | FileCheck %s --check-prefix=LA32S4; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA645 6declare void @bar()7 8define void @bnez_i32(i32 signext %0) nounwind {9; LA32R-LABEL: bnez_i32:10; LA32R: # %bb.0: # %start11; LA32R-NEXT: beq $a0, $zero, .LBB0_212; LA32R-NEXT: # %bb.1: # %f13; LA32R-NEXT: ret14; LA32R-NEXT: .LBB0_2: # %t15; LA32R-NEXT: b bar16;17; LA32S-LABEL: bnez_i32:18; LA32S: # %bb.0: # %start19; LA32S-NEXT: beqz $a0, .LBB0_220; LA32S-NEXT: # %bb.1: # %f21; LA32S-NEXT: ret22; LA32S-NEXT: .LBB0_2: # %t23; LA32S-NEXT: b bar24;25; LA64-LABEL: bnez_i32:26; LA64: # %bb.0: # %start27; LA64-NEXT: beqz $a0, .LBB0_228; LA64-NEXT: # %bb.1: # %f29; LA64-NEXT: ret30; LA64-NEXT: .LBB0_2: # %t31; LA64-NEXT: pcaddu18i $t8, %call36(bar)32; LA64-NEXT: jr $t833start:34 %1 = icmp eq i32 %0, 035 br i1 %1, label %t, label %f36 37t:38 tail call void @bar()39 br label %f40 41f:42 ret void43}44 45define void @beqz_i32(i32 signext %0) nounwind {46; LA32R-LABEL: beqz_i32:47; LA32R: # %bb.0: # %start48; LA32R-NEXT: beq $a0, $zero, .LBB1_249; LA32R-NEXT: # %bb.1: # %t50; LA32R-NEXT: b bar51; LA32R-NEXT: .LBB1_2: # %f52; LA32R-NEXT: ret53;54; LA32S-LABEL: beqz_i32:55; LA32S: # %bb.0: # %start56; LA32S-NEXT: beqz $a0, .LBB1_257; LA32S-NEXT: # %bb.1: # %t58; LA32S-NEXT: b bar59; LA32S-NEXT: .LBB1_2: # %f60; LA32S-NEXT: ret61;62; LA64-LABEL: beqz_i32:63; LA64: # %bb.0: # %start64; LA64-NEXT: beqz $a0, .LBB1_265; LA64-NEXT: # %bb.1: # %t66; LA64-NEXT: pcaddu18i $t8, %call36(bar)67; LA64-NEXT: jr $t868; LA64-NEXT: .LBB1_2: # %f69; LA64-NEXT: ret70start:71 %1 = icmp ne i32 %0, 072 br i1 %1, label %t, label %f73 74t:75 tail call void @bar()76 br label %f77 78f:79 ret void80}81 82define void @bnez_i64(i64 %0) nounwind {83; LA32R-LABEL: bnez_i64:84; LA32R: # %bb.0: # %start85; LA32R-NEXT: or $a0, $a0, $a186; LA32R-NEXT: beq $a0, $zero, .LBB2_287; LA32R-NEXT: # %bb.1: # %f88; LA32R-NEXT: ret89; LA32R-NEXT: .LBB2_2: # %t90; LA32R-NEXT: b bar91;92; LA32S-LABEL: bnez_i64:93; LA32S: # %bb.0: # %start94; LA32S-NEXT: or $a0, $a0, $a195; LA32S-NEXT: beqz $a0, .LBB2_296; LA32S-NEXT: # %bb.1: # %f97; LA32S-NEXT: ret98; LA32S-NEXT: .LBB2_2: # %t99; LA32S-NEXT: b bar100;101; LA64-LABEL: bnez_i64:102; LA64: # %bb.0: # %start103; LA64-NEXT: beqz $a0, .LBB2_2104; LA64-NEXT: # %bb.1: # %f105; LA64-NEXT: ret106; LA64-NEXT: .LBB2_2: # %t107; LA64-NEXT: pcaddu18i $t8, %call36(bar)108; LA64-NEXT: jr $t8109start:110 %1 = icmp eq i64 %0, 0111 br i1 %1, label %t, label %f112 113t:114 tail call void @bar()115 br label %f116 117f:118 ret void119}120 121define void @beqz_i64(i64 %0) nounwind {122; LA32R-LABEL: beqz_i64:123; LA32R: # %bb.0: # %start124; LA32R-NEXT: or $a0, $a0, $a1125; LA32R-NEXT: beq $a0, $zero, .LBB3_2126; LA32R-NEXT: # %bb.1: # %t127; LA32R-NEXT: b bar128; LA32R-NEXT: .LBB3_2: # %f129; LA32R-NEXT: ret130;131; LA32S-LABEL: beqz_i64:132; LA32S: # %bb.0: # %start133; LA32S-NEXT: or $a0, $a0, $a1134; LA32S-NEXT: beqz $a0, .LBB3_2135; LA32S-NEXT: # %bb.1: # %t136; LA32S-NEXT: b bar137; LA32S-NEXT: .LBB3_2: # %f138; LA32S-NEXT: ret139;140; LA64-LABEL: beqz_i64:141; LA64: # %bb.0: # %start142; LA64-NEXT: beqz $a0, .LBB3_2143; LA64-NEXT: # %bb.1: # %t144; LA64-NEXT: pcaddu18i $t8, %call36(bar)145; LA64-NEXT: jr $t8146; LA64-NEXT: .LBB3_2: # %f147; LA64-NEXT: ret148start:149 %1 = icmp ne i64 %0, 0150 br i1 %1, label %t, label %f151 152t:153 tail call void @bar()154 br label %f155 156f:157 ret void158}159