1776889bcSSacha Coppey; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2776889bcSSacha Coppey; RUN: llc -mtriple=riscv64 -debug-entry-values -enable-misched=0 < %s | FileCheck %s 3776889bcSSacha Coppey 453003e36SSacha Coppey; Trivial patchpoint codegen 553003e36SSacha Coppey; 653003e36SSacha Coppeydefine i64 @trivial_patchpoint_codegen(i64 %p1, i64 %p2, i64 %p3, i64 %p4) { 753003e36SSacha Coppey; CHECK-LABEL: trivial_patchpoint_codegen: 853003e36SSacha Coppey; CHECK: # %bb.0: # %entry 953003e36SSacha Coppey; CHECK-NEXT: addi sp, sp, -16 1053003e36SSacha Coppey; CHECK-NEXT: .cfi_def_cfa_offset 16 1153003e36SSacha Coppey; CHECK-NEXT: sd s0, 8(sp) # 8-byte Folded Spill 1253003e36SSacha Coppey; CHECK-NEXT: sd s1, 0(sp) # 8-byte Folded Spill 1353003e36SSacha Coppey; CHECK-NEXT: .cfi_offset s0, -8 1453003e36SSacha Coppey; CHECK-NEXT: .cfi_offset s1, -16 1553003e36SSacha Coppey; CHECK-NEXT: mv s0, a0 1653003e36SSacha Coppey; CHECK-NEXT: .Ltmp0: 1753003e36SSacha Coppey; CHECK-NEXT: lui ra, 3563 1853003e36SSacha Coppey; CHECK-NEXT: addiw ra, ra, -577 1953003e36SSacha Coppey; CHECK-NEXT: slli ra, ra, 12 2053003e36SSacha Coppey; CHECK-NEXT: addi ra, ra, -259 2153003e36SSacha Coppey; CHECK-NEXT: slli ra, ra, 12 2253003e36SSacha Coppey; CHECK-NEXT: addi ra, ra, -1282 2353003e36SSacha Coppey; CHECK-NEXT: jalr ra 2453003e36SSacha Coppey; CHECK-NEXT: mv s1, a0 2553003e36SSacha Coppey; CHECK-NEXT: mv a0, s0 2653003e36SSacha Coppey; CHECK-NEXT: mv a1, s1 2753003e36SSacha Coppey; CHECK-NEXT: .Ltmp1: 2853003e36SSacha Coppey; CHECK-NEXT: lui ra, 3563 2953003e36SSacha Coppey; CHECK-NEXT: addiw ra, ra, -577 3053003e36SSacha Coppey; CHECK-NEXT: slli ra, ra, 12 3153003e36SSacha Coppey; CHECK-NEXT: addi ra, ra, -259 3253003e36SSacha Coppey; CHECK-NEXT: slli ra, ra, 12 3353003e36SSacha Coppey; CHECK-NEXT: addi ra, ra, -1281 3453003e36SSacha Coppey; CHECK-NEXT: jalr ra 3553003e36SSacha Coppey; CHECK-NEXT: mv a0, s1 3653003e36SSacha Coppey; CHECK-NEXT: ld s0, 8(sp) # 8-byte Folded Reload 3753003e36SSacha Coppey; CHECK-NEXT: ld s1, 0(sp) # 8-byte Folded Reload 38*97982a8cSdlav-sc; CHECK-NEXT: .cfi_restore s0 39*97982a8cSdlav-sc; CHECK-NEXT: .cfi_restore s1 4053003e36SSacha Coppey; CHECK-NEXT: addi sp, sp, 16 41*97982a8cSdlav-sc; CHECK-NEXT: .cfi_def_cfa_offset 0 4253003e36SSacha Coppey; CHECK-NEXT: ret 4353003e36SSacha Coppeyentry: 4453003e36SSacha Coppey %resolveCall2 = inttoptr i64 244837814094590 to i8* 4553003e36SSacha Coppey %result = tail call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 2, i32 28, i8* %resolveCall2, i32 4, i64 %p1, i64 %p2, i64 %p3, i64 %p4) 4653003e36SSacha Coppey %resolveCall3 = inttoptr i64 244837814094591 to i8* 4753003e36SSacha Coppey tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 3, i32 28, i8* %resolveCall3, i32 2, i64 %p1, i64 %result) 4853003e36SSacha Coppey ret i64 %result 4953003e36SSacha Coppey} 5053003e36SSacha Coppey 51776889bcSSacha Coppey; Test small patchpoints that don't emit calls. 52776889bcSSacha Coppeydefine void @small_patchpoint_codegen(i64 %p1, i64 %p2, i64 %p3, i64 %p4) { 53776889bcSSacha Coppey; CHECK-LABEL: small_patchpoint_codegen: 54776889bcSSacha Coppey; CHECK: # %bb.0: # %entry 5553003e36SSacha Coppey; CHECK-NEXT: .Ltmp2: 56776889bcSSacha Coppey; CHECK-NEXT: nop 57776889bcSSacha Coppey; CHECK-NEXT: nop 58776889bcSSacha Coppey; CHECK-NEXT: nop 59776889bcSSacha Coppey; CHECK-NEXT: nop 60776889bcSSacha Coppey; CHECK-NEXT: nop 61776889bcSSacha Coppey; CHECK-NEXT: ret 62776889bcSSacha Coppeyentry: 63ff9af4c4SNikita Popov %result = tail call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 20, ptr null, i32 2, i64 %p1, i64 %p2) 64776889bcSSacha Coppey ret void 65776889bcSSacha Coppey} 66776889bcSSacha Coppey 67776889bcSSacha Coppeydeclare void @llvm.experimental.stackmap(i64, i32, ...) 68ff9af4c4SNikita Popovdeclare void @llvm.experimental.patchpoint.void(i64, i32, ptr, i32, ...) 69ff9af4c4SNikita Popovdeclare i64 @llvm.experimental.patchpoint.i64(i64, i32, ptr, i32, ...) 70