82 lines · plain
1; RUN: llc -verify-machineinstrs -mtriple=x86_64-unknown < %s | FileCheck %s2 3define dso_local void @one_instruction() #0 {4; CHECK-LABEL: one_instruction:5entry:6 ret void7; CHECK-NOT: retq8; CHECK: popq %[[x:[^ ]*]]9; CHECK-NEXT: lfence10; CHECK-NEXT: jmpq *%[[x]]11}12 13; Function Attrs: noinline nounwind optnone uwtable14define dso_local i32 @ordinary_function(i32 %x, i32 %y) #0 {15; CHECK-LABEL: ordinary_function:16entry:17 %x.addr = alloca i32, align 418 %y.addr = alloca i32, align 419 store i32 %x, ptr %x.addr, align 420 store i32 %y, ptr %y.addr, align 421 %0 = load i32, ptr %x.addr, align 422 %1 = load i32, ptr %y.addr, align 423 %add = add nsw i32 %0, %124 ret i32 %add25; CHECK-NOT: retq26; CHECK: popq %[[x:[^ ]*]]27; CHECK-NEXT: lfence28; CHECK-NEXT: jmpq *%[[x]]29}30 31; Function Attrs: noinline nounwind optnone uwtable32define dso_local i32 @no_caller_saved_registers_function(i32 %x, i32 %y) #1 {33; CHECK-LABEL: no_caller_saved_registers_function:34entry:35 %x.addr = alloca i32, align 436 %y.addr = alloca i32, align 437 store i32 %x, ptr %x.addr, align 438 store i32 %y, ptr %y.addr, align 439 %0 = load i32, ptr %x.addr, align 440 %1 = load i32, ptr %y.addr, align 441 %add = add nsw i32 %0, %142 ret i32 %add43; CHECK-NOT: retq44; CHECK: popq %rsi45; CHECK-NEXT: lfence46; CHECK-NEXT: jmpq *%rsi47}48 49; Function Attrs: noinline nounwind optnone uwtable50define dso_local preserve_mostcc void @preserve_most() #0 {51; CHECK-LABEL: preserve_most:52entry:53 ret void54; CHECK-NOT: retq55; CHECK: popq %r1156; CHECK-NEXT: lfence57; CHECK-NEXT: jmpq *%r1158}59 60; Function Attrs: noinline nounwind optnone uwtable61define dso_local preserve_allcc void @preserve_all() #0 {62; CHECK-LABEL: preserve_all:63entry:64 ret void65; CHECK-NOT: retq66; CHECK: popq %r1167; CHECK-NEXT: lfence68; CHECK-NEXT: jmpq *%r1169}70 71define { i64, i128 } @ret_i64_i128() #0 {72; CHECK-LABEL: ret_i64_i128:73 ret { i64, i128 } { i64 1, i128 36893488147419103235 }74; CHECK-NOT: retq75; CHECK: popq %rsi76; CHECK-NEXT: lfence77; CHECK-NEXT: jmpq *%rsi78}79 80attributes #0 = { "target-features"="+lvi-cfi" }81attributes #1 = { "no_caller_saved_registers" "target-features"="+lvi-cfi" }82