brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 954985a Raw
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