================ @@ -0,0 +1,92 @@ +; RUN: sed -e "s/RETTYPE/void/;s/RETVAL//" %s | llc -mtriple=aarch64-apple-darwin | FileCheck --check-prefixes=ALL %s +; RUN: sed -e "s/RETTYPE/i32/;s/RETVAL/undef/" %s | llc -mtriple=aarch64-apple-darwin | FileCheck --check-prefixes=ALL %s +; RUN: sed -e "s/RETTYPE/\{i64\,i64\}/;s/RETVAL/undef/" %s | llc -mtriple=aarch64-apple-darwin | FileCheck --check-prefixes=ALL %s +; RUN: sed -e "s/RETTYPE/double/;s/RETVAL/0./" %s | llc -mtriple=aarch64-apple-darwin | FileCheck --check-prefixes=ALL,DOUBLE %s + +; We don't need to save registers before using them inside preserve_none function. +define preserve_nonecc RETTYPE @preserve_nonecc1(i64, i64, double, double) nounwind { +entry: +;ALL-LABEL: preserve_nonecc1 +;ALL: ; %bb.0: +;ALL-NEXT: InlineAsm Start +;ALL-NEXT: InlineAsm End +;DOUBLE-NEXT: movi d0, #0000000000000000 +;ALL-NEXT: ret + call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{d0},~{d1},~{d2},~{d3},~{d4},~{d5},~{d6},~{d7},~{d8},~{d9},~{d10},~{d11},~{d12},~{d13},~{d14},~{d15},~{d16}"() + ret RETTYPE RETVAL +} + +; When calling a preserve_none function, all live registers must be saved and +; restored around the function call. +declare preserve_nonecc RETTYPE @bar(i64, i64, double, double) ---------------- DanielKristofKiss wrote:
NIT: maybe easier to follow like: ```suggestion declare preserve_nonecc RETTYPE @preserve_nonecc2(i64, i64, double, double) define void @bar() nounwind { ``` https://github.com/llvm/llvm-project/pull/91046 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits