diff --git a/llvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s b/llvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s @@ -0,0 +1,13 @@ +# RUN: llvm-exegesis -mode=latency -opcode-name=SQRTSSr -repetition-mode=loop | FileCheck %s + +# Check that the setup code for MXCSR does not crash the snippet. + +CHECK: --- +CHECK-NEXT: mode: latency +CHECK-NEXT: key: +CHECK-NEXT: instructions: +CHECK-NEXT: SQRTSSr +CHECK-NEXT: config: '' +CHECK-NEXT: register_initial_values: +CHECK-NOT: crashed +CHECK-LAST: ... diff --git a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp --- a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp +++ b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp @@ -513,6 +513,7 @@ .addReg(0) // IndexReg .addImm(0) // Disp .addReg(0)); // Segment + add(releaseStackSpace(4)); return std::move(Instructions); }