75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s3 4define void @foo(i32 %i) nounwind {5; CHECK-LABEL: foo:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: addi.d $sp, $sp, -168; CHECK-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill9; CHECK-NEXT: addi.w $a0, $a0, 010; CHECK-NEXT: ori $a1, $zero, 711; CHECK-NEXT: beq $a0, $a1, .LBB0_312; CHECK-NEXT: # %bb.1: # %entry13; CHECK-NEXT: ori $a1, $zero, 514; CHECK-NEXT: bne $a0, $a1, .LBB0_415; CHECK-NEXT: # %bb.2: # %if.then16; CHECK-NEXT: pcaddu18i $ra, %call36(bar)17; CHECK-NEXT: jirl $ra, $ra, 018; CHECK-NEXT: b .LBB0_419; CHECK-NEXT: .LBB0_3: # %if.then220; CHECK-NEXT: pcaddu18i $ra, %call36(bar)21; CHECK-NEXT: jirl $ra, $ra, 022; CHECK-NEXT: .LBB0_4: # %if.end323; CHECK-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload24; CHECK-NEXT: addi.d $sp, $sp, 1625; CHECK-NEXT: pcaddu18i $t8, %call36(bar)26; CHECK-NEXT: jr $t827entry:28 switch i32 %i, label %if.end3 [29 i32 5, label %if.then30 i32 7, label %if.then231 ]32 33if.then:34 tail call void @bar() #035 br label %if.end336 37if.then2:38 tail call void @bar() #039 br label %if.end340 41if.end3:42 tail call void @bar() #043 ret void44}45 46define void @foo_tail(i1 %i) nounwind {47; CHECK-LABEL: foo_tail:48; CHECK: # %bb.0: # %entry49; CHECK-NEXT: andi $a0, $a0, 150; CHECK-NEXT: beqz $a0, .LBB1_251; CHECK-NEXT: # %bb.1: # %if.then52; CHECK-NEXT: pcaddu18i $t8, %call36(bar)53; CHECK-NEXT: jr $t854; CHECK-NEXT: .LBB1_2: # %if.else55; CHECK-NEXT: pcaddu18i $t8, %call36(bar)56; CHECK-NEXT: jr $t857entry:58 br i1 %i, label %if.then, label %if.else59 60if.then:61 tail call void @bar() #062 br label %if.end63 64if.else:65 tail call void @bar() #066 br label %if.end67 68if.end:69 ret void70}71 72declare void @bar()73 74attributes #0 = { nomerge }75