================ @@ -0,0 +1,85 @@ +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck --check-prefixes=ALL %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx | FileCheck --check-prefixes=ALL,AVX %s + +; Don't need to preserve registers before using them. +define preserve_nonecc double @preserve_nonecc1() nounwind { +entry: +;ALL-LABEL: preserve_nonecc1 +;ALL-NOT: movaps %xmm1 +;ALL-NOT: movaps %xmm0 +;AVX-NOT: vmovups %ymm1 +;AVX-NOT: vmovups %ymm0 +;ALL-NOT: movaps {{.*}} %xmm0 +;ALL-NOT: movaps {{.*}} %xmm1 +;AVX-NOT: vmovups {{.*}} %ymm0 +;AVX-NOT: vmovups {{.*}} %ymm1 + call void asm sideeffect "", "~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15},~{rbp},~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15}"() + ret double 0. +} + +; Save/restore live registers across preserve_none function call. +declare preserve_nonecc double @bar_double(i64, i64) +define void @preserve_nonecc2() nounwind { +entry: +;ALL-LABEL: preserve_nonecc2 ---------------- david-xl wrote:
Those xmm registers will be preserved/restored around the call even without the attribute. Perhaps check the the GSRs ? https://github.com/llvm/llvm-project/pull/76868 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits