From 8a3553276e4bf7eec6a2e0c2886bee1cec4d7ec3 Mon Sep 17 00:00:00 2001 From: Sean Fertile Date: Thu, 20 Feb 2020 09:18:10 -0500 Subject: [PATCH] [PowerPC][NFC] Add a test for vrsave usage iinline asm. Add a lit test that that uses vrsave register in the clobber list, and tests the extended mnemonics mtvrsave and mfvrsave. --- test/CodeGen/PowerPC/vrsave-inline-asm.ll | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 test/CodeGen/PowerPC/vrsave-inline-asm.ll diff --git a/test/CodeGen/PowerPC/vrsave-inline-asm.ll b/test/CodeGen/PowerPC/vrsave-inline-asm.ll new file mode 100644 index 00000000000..32dd513bd06 --- /dev/null +++ b/test/CodeGen/PowerPC/vrsave-inline-asm.ll @@ -0,0 +1,42 @@ +; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -verify-machineinstrs < %s | FileCheck %s +; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -verify-machineinstrs < %s | FileCheck %s +; RUN: llc -mtriple=powerpc-unknown-linux-gnu -verify-machineinstrs < %s | FileCheck %s + +; RUN: llc -mtriple=powerpc64-unknown-freebsd -verify-machineinstrs < %s | FileCheck %s +; RUN: llc -mtriple=powerpc-unknown-freebsd -verify-machineinstrs < %s | FileCheck %s + +define dso_local void @moveToVRSave(i32 signext %i) { +entry: + tail call void asm sideeffect "mtvrsave $0", "r,~{vrsave}"(i32 %i) + ret void +} + +define dso_local signext i32 @moveFromVRSave() { +entry: + %0 = tail call i32 asm sideeffect "mfvrsave $0", "=r"() + ret i32 %0 +} + +define dso_local void @moveToSPR(i32 signext %i) { +entry: + tail call void asm sideeffect "mtspr 256, $0", "r,~{vrsave}"(i32 %i) + ret void +} + +define dso_local signext i32 @moveFromSPR() { +entry: + %0 = tail call i32 asm sideeffect "mfspr $0, 256", "=r"() + ret i32 %0 +} + +; CHECK-LABEl: moveToVRSave: +; CHECK: mtvrsave 3 + +; CHECK-LABEL: moveFromVRSave: +; CHECK: mfvrsave {{[0-9]+}} + +; CHECK-LABEL: moveToSPR: +; CHECK: mtspr 256, 3 + +; CHECK-LABEL: moveFromSPR: +; CHECK: mfspr {{[0-9]}}, 256