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