1*83835e22SSami Tolvanen; RUN: llc -mtriple=riscv32 -verify-machineinstrs -riscv-no-aliases < %s \ 2*83835e22SSami Tolvanen; RUN: | FileCheck %s --check-prefixes=CHECK,RV32 3*83835e22SSami Tolvanen; RUN: llc -mtriple=riscv64 -verify-machineinstrs -riscv-no-aliases < %s \ 4*83835e22SSami Tolvanen; RUN: | FileCheck %s --check-prefixes=CHECK,RV64 5*83835e22SSami Tolvanen 6*83835e22SSami Tolvanen; CHECK: .word 12345678 7*83835e22SSami Tolvanendefine void @f1(ptr noundef %x) !kcfi_type !1 { 8*83835e22SSami Tolvanen; CHECK-LABEL: f1: 9*83835e22SSami Tolvanen; CHECK: # %bb.0: 10*83835e22SSami Tolvanen; CHECK: lw t1, -4(a0) 11*83835e22SSami Tolvanen; CHECK-NEXT: lui t2, 3014 12*83835e22SSami Tolvanen; RV32-NEXT: addi t2, t2, 334 13*83835e22SSami Tolvanen; RV64-NEXT: addiw t2, t2, 334 14*83835e22SSami Tolvanen; CHECK-NEXT: beq t1, t2, .Ltmp0 15*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp1: 16*83835e22SSami Tolvanen; CHECK-NEXT: ebreak 17*83835e22SSami Tolvanen; CHECK-NEXT: .section .kcfi_traps,"ao",@progbits,.text 18*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp2: 19*83835e22SSami Tolvanen; CHECK-NEXT: .word .Ltmp1-.Ltmp2 20*83835e22SSami Tolvanen; CHECK-NEXT: .text 21*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp0: 22*83835e22SSami Tolvanen; CHECK-NEXT: jalr ra, 0(a0) 23*83835e22SSami Tolvanen call void %x() [ "kcfi"(i32 12345678) ] 24*83835e22SSami Tolvanen; CHECK: lw t1, -4(s0) 25*83835e22SSami Tolvanen; CHECK-NEXT: addi t2, t2, 1234 26*83835e22SSami Tolvanen; CHECK-NEXT: beq t1, t2, .Ltmp3 27*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp4: 28*83835e22SSami Tolvanen; CHECK-NEXT: ebreak 29*83835e22SSami Tolvanen; CHECK-NEXT: .section .kcfi_traps,"ao",@progbits,.text 30*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp5: 31*83835e22SSami Tolvanen; CHECK-NEXT: .word .Ltmp4-.Ltmp5 32*83835e22SSami Tolvanen; CHECK-NEXT: .text 33*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp3: 34*83835e22SSami Tolvanen; CHECK-NEXT: jalr ra, 0(s0) 35*83835e22SSami Tolvanen call void %x() [ "kcfi"(i32 1234) ] 36*83835e22SSami Tolvanen ret void 37*83835e22SSami Tolvanen} 38*83835e22SSami Tolvanen 39*83835e22SSami Tolvanen; CHECK-NOT: .word: 40*83835e22SSami Tolvanendefine void @f2(ptr noundef %x) #0 { 41*83835e22SSami Tolvanen; CHECK-LABEL: f2: 42*83835e22SSami Tolvanen; CHECK: # %bb.0: 43*83835e22SSami Tolvanen; CHECK-NEXT: addi zero, zero, 0 44*83835e22SSami Tolvanen; CHECK-NEXT: addi zero, zero, 0 45*83835e22SSami Tolvanen; CHECK-NEXT: lw t1, -4(a0) 46*83835e22SSami Tolvanen; CHECK-NEXT: lui t2, 3014 47*83835e22SSami Tolvanen; RV32-NEXT: addi t2, t2, 334 48*83835e22SSami Tolvanen; RV64-NEXT: addiw t2, t2, 334 49*83835e22SSami Tolvanen; CHECK-NEXT: beq t1, t2, .Ltmp6 50*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp7: 51*83835e22SSami Tolvanen; CHECK-NEXT: ebreak 52*83835e22SSami Tolvanen; CHECK-NEXT: .section .kcfi_traps,"ao",@progbits,.text 53*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp8: 54*83835e22SSami Tolvanen; CHECK-NEXT: .word .Ltmp7-.Ltmp8 55*83835e22SSami Tolvanen; CHECK-NEXT: .text 56*83835e22SSami Tolvanen; CHECK-NEXT: .Ltmp6: 57*83835e22SSami Tolvanen; CHECK-NEXT: jalr zero, 0(a0) 58*83835e22SSami Tolvanen tail call void %x() [ "kcfi"(i32 12345678) ] 59*83835e22SSami Tolvanen ret void 60*83835e22SSami Tolvanen} 61*83835e22SSami Tolvanen 62*83835e22SSami Tolvanenattributes #0 = { "patchable-function-entry"="2" } 63*83835e22SSami Tolvanen 64*83835e22SSami Tolvanen!llvm.module.flags = !{!0} 65*83835e22SSami Tolvanen!0 = !{i32 4, !"kcfi", i32 1} 66*83835e22SSami Tolvanen!1 = !{i32 12345678} 67