+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xsave,+xsaves | FileCheck %s\r
+\r
+define void @test_xsaves(i8* %ptr, i32 %hi, i32 %lo) {\r
+; CHECK-LABEL: test_xsaves\r
+; CHECK: movl %edx, %eax\r
+; CHECK: movl %esi, %edx\r
+; CHECK: xsaves (%rdi)\r
+ call void @llvm.x86.xsaves(i8* %ptr, i32 %hi, i32 %lo)\r
+ ret void;\r
+}\r
+declare void @llvm.x86.xsaves(i8*, i32, i32)\r
+\r
+define void @test_xsaves64(i8* %ptr, i32 %hi, i32 %lo) {\r
+; CHECK-LABEL: test_xsaves64\r
+; CHECK: movl %edx, %eax\r
+; CHECK: movl %esi, %edx\r
+; CHECK: xsaves64 (%rdi)\r
+ call void @llvm.x86.xsaves64(i8* %ptr, i32 %hi, i32 %lo)\r
+ ret void;\r
+}\r
+declare void @llvm.x86.xsaves64(i8*, i32, i32)\r
+\r
+define void @test_xrstors(i8* %ptr, i32 %hi, i32 %lo) {\r
+; CHECK-LABEL: test_xrstors\r
+; CHECK: movl %edx, %eax\r
+; CHECK: movl %esi, %edx\r
+; CHECK: xrstors (%rdi)\r
+ call void @llvm.x86.xrstors(i8* %ptr, i32 %hi, i32 %lo)\r
+ ret void;\r
+}\r
+declare void @llvm.x86.xrstors(i8*, i32, i32)\r
+\r
+define void @test_xrstors64(i8* %ptr, i32 %hi, i32 %lo) {\r
+; CHECK-LABEL: test_xrstors64\r
+; CHECK: movl %edx, %eax\r
+; CHECK: movl %esi, %edx\r
+; CHECK: xrstors64 (%rdi)\r
+ call void @llvm.x86.xrstors64(i8* %ptr, i32 %hi, i32 %lo)\r
+ ret void;\r
+}\r
+declare void @llvm.x86.xrstors64(i8*, i32, i32)\r