1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32 3; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64 4 5declare void @bar() 6 7define void @bnez_i32(i32 signext %0) nounwind { 8; LA32-LABEL: bnez_i32: 9; LA32: # %bb.0: # %start 10; LA32-NEXT: beqz $a0, .LBB0_2 11; LA32-NEXT: # %bb.1: # %f 12; LA32-NEXT: ret 13; LA32-NEXT: .LBB0_2: # %t 14; LA32-NEXT: b %plt(bar) 15; 16; LA64-LABEL: bnez_i32: 17; LA64: # %bb.0: # %start 18; LA64-NEXT: beqz $a0, .LBB0_2 19; LA64-NEXT: # %bb.1: # %f 20; LA64-NEXT: ret 21; LA64-NEXT: .LBB0_2: # %t 22; LA64-NEXT: b %plt(bar) 23start: 24 %1 = icmp eq i32 %0, 0 25 br i1 %1, label %t, label %f 26 27t: 28 tail call void @bar() 29 br label %f 30 31f: 32 ret void 33} 34 35define void @beqz_i32(i32 signext %0) nounwind { 36; LA32-LABEL: beqz_i32: 37; LA32: # %bb.0: # %start 38; LA32-NEXT: beqz $a0, .LBB1_2 39; LA32-NEXT: # %bb.1: # %t 40; LA32-NEXT: b %plt(bar) 41; LA32-NEXT: .LBB1_2: # %f 42; LA32-NEXT: ret 43; 44; LA64-LABEL: beqz_i32: 45; LA64: # %bb.0: # %start 46; LA64-NEXT: beqz $a0, .LBB1_2 47; LA64-NEXT: # %bb.1: # %t 48; LA64-NEXT: b %plt(bar) 49; LA64-NEXT: .LBB1_2: # %f 50; LA64-NEXT: ret 51start: 52 %1 = icmp ne i32 %0, 0 53 br i1 %1, label %t, label %f 54 55t: 56 tail call void @bar() 57 br label %f 58 59f: 60 ret void 61} 62 63define void @bnez_i64(i64 %0) nounwind { 64; LA32-LABEL: bnez_i64: 65; LA32: # %bb.0: # %start 66; LA32-NEXT: or $a0, $a0, $a1 67; LA32-NEXT: beqz $a0, .LBB2_2 68; LA32-NEXT: # %bb.1: # %f 69; LA32-NEXT: ret 70; LA32-NEXT: .LBB2_2: # %t 71; LA32-NEXT: b %plt(bar) 72; 73; LA64-LABEL: bnez_i64: 74; LA64: # %bb.0: # %start 75; LA64-NEXT: beqz $a0, .LBB2_2 76; LA64-NEXT: # %bb.1: # %f 77; LA64-NEXT: ret 78; LA64-NEXT: .LBB2_2: # %t 79; LA64-NEXT: b %plt(bar) 80start: 81 %1 = icmp eq i64 %0, 0 82 br i1 %1, label %t, label %f 83 84t: 85 tail call void @bar() 86 br label %f 87 88f: 89 ret void 90} 91 92define void @beqz_i64(i64 %0) nounwind { 93; LA32-LABEL: beqz_i64: 94; LA32: # %bb.0: # %start 95; LA32-NEXT: or $a0, $a0, $a1 96; LA32-NEXT: beqz $a0, .LBB3_2 97; LA32-NEXT: # %bb.1: # %t 98; LA32-NEXT: b %plt(bar) 99; LA32-NEXT: .LBB3_2: # %f 100; LA32-NEXT: ret 101; 102; LA64-LABEL: beqz_i64: 103; LA64: # %bb.0: # %start 104; LA64-NEXT: beqz $a0, .LBB3_2 105; LA64-NEXT: # %bb.1: # %t 106; LA64-NEXT: b %plt(bar) 107; LA64-NEXT: .LBB3_2: # %f 108; LA64-NEXT: ret 109start: 110 %1 = icmp ne i64 %0, 0 111 br i1 %1, label %t, label %f 112 113t: 114 tail call void @bar() 115 br label %f 116 117f: 118 ret void 119} 120