diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp index 08f44c7d87091..ee6900141647f 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp @@ -169,26 +169,10 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID, case X86::BI__builtin_ia32_vec_set_v16hi: case X86::BI__builtin_ia32_vec_set_v8si: case X86::BI__builtin_ia32_vec_set_v4di: - cgm.errorNYI(e->getSourceRange(), - std::string("unimplemented X86 builtin call: ") + - getContext().BuiltinInfo.getName(builtinID)); - return {}; case X86::BI_mm_setcsr: - case X86::BI__builtin_ia32_ldmxcsr: { - mlir::Location loc = getLoc(e->getExprLoc()); - Address tmp = createMemTemp(e->getArg(0)->getType(), loc); - builder.createStore(loc, ops[0], tmp); - return emitIntrinsicCallOp(*this, e, "x86.sse.ldmxcsr", builder.getVoidTy(), - tmp.getPointer()); - } + case X86::BI__builtin_ia32_ldmxcsr: case X86::BI_mm_getcsr: - case X86::BI__builtin_ia32_stmxcsr: { - mlir::Location loc = getLoc(e->getExprLoc()); - Address tmp = createMemTemp(e->getType(), loc); - emitIntrinsicCallOp(*this, e, "x86.sse.stmxcsr", builder.getVoidTy(), - tmp.getPointer()); - return builder.createLoad(loc, tmp); - } + case X86::BI__builtin_ia32_stmxcsr: case X86::BI__builtin_ia32_xsave: case X86::BI__builtin_ia32_xsave64: case X86::BI__builtin_ia32_xrstor: diff --git a/clang/test/CIR/CodeGen/X86/sse-builtins.c b/clang/test/CIR/CodeGen/X86/sse-builtins.c index 04e69a9990159..3a61018741958 100644 --- a/clang/test/CIR/CodeGen/X86/sse-builtins.c +++ b/clang/test/CIR/CodeGen/X86/sse-builtins.c @@ -16,35 +16,6 @@ #include -void test_mm_setcsr(unsigned int A) { - // CIR-LABEL: test_mm_setcsr - // CIR: cir.store {{.*}}, {{.*}} : !u32i - // CIR: cir.call_llvm_intrinsic "x86.sse.ldmxcsr" {{.*}} : (!cir.ptr) -> !void - - // LLVM-LABEL: test_mm_setcsr - // LLVM: store i32 - // LLVM: call void @llvm.x86.sse.ldmxcsr(ptr {{.*}}) - - // OGCG-LABEL: test_mm_setcsr - // OGCG: store i32 - // OGCG: call void @llvm.x86.sse.ldmxcsr(ptr {{.*}}) - _mm_setcsr(A); -} - -unsigned int test_mm_getcsr(void) { - // CIR-LABEL: test_mm_getcsr - // CIR: cir.call_llvm_intrinsic "x86.sse.stmxcsr" %{{.*}} : (!cir.ptr) -> !void - // CIR: cir.load {{.*}} : !cir.ptr, !u32i - - // LLVM-LABEL: test_mm_getcsr - // LLVM: call void @llvm.x86.sse.stmxcsr(ptr %{{.*}}) - // LLVM: load i32 - - // OGCG-LABEL: test_mm_getcsr - // OGCG: call void @llvm.x86.sse.stmxcsr(ptr %{{.*}}) - // OGCG: load i32 - return _mm_getcsr(); -} void test_mm_sfence(void) { // CIR-LABEL: test_mm_sfence