1*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv32 -mattr=+reserve-x1 < %s 2>&1 | FileCheck %s -check-prefix=X1 2*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv64 -mattr=+reserve-x1 < %s 2>&1 | FileCheck %s -check-prefix=X1 3*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv32 -mattr=+reserve-x2 < %s 2>&1 | FileCheck %s -check-prefix=X2 4*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv64 -mattr=+reserve-x2 < %s 2>&1 | FileCheck %s -check-prefix=X2 5*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv32 -mattr=+reserve-x8 < %s 2>&1 | FileCheck %s -check-prefix=X8 6*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv64 -mattr=+reserve-x8 < %s 2>&1 | FileCheck %s -check-prefix=X8 7*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv32 -mattr=+reserve-x10 < %s 2>&1 | FileCheck %s -check-prefix=X10 8*aed9d6d6SSimon Cook; RUN: not llc -mtriple=riscv64 -mattr=+reserve-x10 < %s 2>&1 | FileCheck %s -check-prefix=X10 9*aed9d6d6SSimon Cook; RUN: llc -mtriple=riscv32 -mattr=+reserve-x11 < %s 2>&1 | FileCheck %s -check-prefix=X11 10*aed9d6d6SSimon Cook; RUN: llc -mtriple=riscv32 -mattr=+reserve-x11 < %s 2>&1 | FileCheck %s -check-prefix=X11 11*aed9d6d6SSimon Cook; RUN: llc -mtriple=riscv32 <%s 12*aed9d6d6SSimon Cook; RUN: llc -mtriple=riscv64 <%s 13*aed9d6d6SSimon Cook 14*aed9d6d6SSimon Cook; This tests combinations when we would expect an error to be produced because 15*aed9d6d6SSimon Cook; a reserved register is required by the default ABI. The final test checks no 16*aed9d6d6SSimon Cook; errors are produced when no registers are reserved. 17*aed9d6d6SSimon Cook 18*aed9d6d6SSimon Cookdefine i32 @caller(i32 %a) #0 { 19*aed9d6d6SSimon Cook; X1: in function caller {{.*}} Return address register required, but has been reserved. 20*aed9d6d6SSimon Cook; X2: in function caller {{.*}} Stack pointer required, but has been reserved. 21*aed9d6d6SSimon Cook; X8: in function caller {{.*}} Frame pointer required, but has been reserved. 22*aed9d6d6SSimon Cook; X10: in function caller {{.*}} Argument register required, but has been reserved. 23*aed9d6d6SSimon Cook; X10: in function caller {{.*}} Return value register required, but has been reserved. 24*aed9d6d6SSimon Cook %call = call i32 @callee(i32 0) 25*aed9d6d6SSimon Cook ret i32 %call 26*aed9d6d6SSimon Cook} 27*aed9d6d6SSimon Cook 28*aed9d6d6SSimon Cookdeclare i32 @callee(i32 %a) 29*aed9d6d6SSimon Cook 30*aed9d6d6SSimon Cookdefine void @clobber() { 31*aed9d6d6SSimon Cook; X11: warning: inline asm clobber list contains reserved registers: X11 32*aed9d6d6SSimon Cook call void asm sideeffect "nop", "~{x11}"() 33*aed9d6d6SSimon Cook ret void 34*aed9d6d6SSimon Cook} 35*aed9d6d6SSimon Cook 36*aed9d6d6SSimon Cookattributes #0 = { "frame-pointer"="all" } 37