1*06449095SYeting Kuo; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3 2*06449095SYeting Kuo; RUN: llc -mtriple=riscv64 -stop-after=finalize-isel < %s | FileCheck %s 3*06449095SYeting Kuo; RUN: llc -mtriple=riscv64 -mattr=+experimental-zicfilp -stop-after=finalize-isel < %s | FileCheck -check-prefixes=ZICFILP %s 4*06449095SYeting Kuo 5*06449095SYeting Kuo@brind.arr = internal unnamed_addr constant [2 x ptr] [ptr blockaddress(@brind, %5), ptr blockaddress(@brind, %8)], align 8 6*06449095SYeting Kuo@x = dso_local global i32 0, align 4 7*06449095SYeting Kuo 8*06449095SYeting Kuodefine void @brind(i32 noundef signext %0) { 9*06449095SYeting Kuo ; CHECK-LABEL: name: brind 10*06449095SYeting Kuo ; CHECK: PseudoBRIND killed [[VAR:%.*]], 0 11*06449095SYeting Kuo ; ZICFILP-LABEL: name: brind 12*06449095SYeting Kuo ; ZICFILP: PseudoBRINDNonX7 killed [[VAR:%.*]], 0 13*06449095SYeting Kuo %2 = sext i32 %0 to i64 14*06449095SYeting Kuo %3 = getelementptr inbounds [2 x ptr], ptr @brind.arr, i64 0, i64 %2 15*06449095SYeting Kuo %4 = load ptr, ptr %3, align 8 16*06449095SYeting Kuo indirectbr ptr %4, [label %5, label %8] 17*06449095SYeting Kuo 18*06449095SYeting Kuo5: ; preds = %1 19*06449095SYeting Kuo %6 = load i32, ptr @x, align 4 20*06449095SYeting Kuo %7 = add nsw i32 %6, 2 21*06449095SYeting Kuo store i32 %7, ptr @x, align 4 22*06449095SYeting Kuo br label %8 23*06449095SYeting Kuo 24*06449095SYeting Kuo8: ; preds = %5, %1 25*06449095SYeting Kuo %9 = load i32, ptr @x, align 4 26*06449095SYeting Kuo %10 = add nsw i32 %9, 1 27*06449095SYeting Kuo store i32 %10, ptr @x, align 4 28*06449095SYeting Kuo ret void 29*06449095SYeting Kuo} 30*06449095SYeting Kuo 31*06449095SYeting Kuodefine i32 @indirect_call(ptr %0) { 32*06449095SYeting Kuo ; CHECK-LABEL: name: indirect_call 33*06449095SYeting Kuo ; CHECK: PseudoCALLIndirect 34*06449095SYeting Kuo ; ZICFILP-LABEL: name: indirect_call 35*06449095SYeting Kuo ; ZICFILP: PseudoCALLIndirectNonX7 36*06449095SYeting Kuo call void %0() 37*06449095SYeting Kuo ret i32 0 38*06449095SYeting Kuo} 39*06449095SYeting Kuo 40*06449095SYeting Kuo 41*06449095SYeting Kuodefine void @indirect_tail(ptr %0) { 42*06449095SYeting Kuo ; CHECK-LABEL: name: indirect_tail 43*06449095SYeting Kuo ; CHECK: PseudoTAILIndirect 44*06449095SYeting Kuo ; ZICFILP-LABEL: name: indirect_tail 45*06449095SYeting Kuo ; ZICFILP: PseudoTAILIndirectNonX7 46*06449095SYeting Kuo tail call void %0() 47*06449095SYeting Kuo ret void 48*06449095SYeting Kuo} 49