//
// SSE1
-// Arithmetics
+// Arithmetic ops
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
def int_x86_sse_addss : GCCBuiltin<"__builtin_ia32_addss">,
Intrinsic<[llvm_float_ty, llvm_float_ty,
llvm_v4f32_ty], [InstrNoMem]>;
}
-// Logical
+// Logical ops
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
def int_x86_sse_andps : GCCBuiltin<"__builtin_ia32_andps">,
Intrinsic<[llvm_v4f32_ty, llvm_v4f32_ty,
llvm_v4f32_ty], [InstrNoMem]>;
}
-// Comparison
+// Comparison ops
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
def int_x86_sse_cmpeqss : GCCBuiltin<"__builtin_ia32_cmpeqss">,
Intrinsic<[llvm_float_ty, llvm_float_ty,
}
-// Conversion
+// Conversion ops
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
def int_x86_sse_cvtss2si : GCCBuiltin<"__builtin_ia32_cvtss2si">,
Intrinsic<[llvm_int_ty, llvm_float_ty], [InstrNoMem]>;
Intrinsic<[llvm_v4f32_ty, llvm_v2i32_ty], [InstrNoMem]>;
}
+// SIMD load ops
+
+let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
+ def int_x86_sse_loadhps : GCCBuiltin<"__builtin_ia32_loadhps">,
+ Intrinsic<[llvm_v4f32_ty, llvm_ptr_ty], [IntrReadMem]>;
+}
+
+let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
+ def int_x86_sse_loadlps : GCCBuiltin<"__builtin_ia32_loadlps">,
+ Intrinsic<[llvm_v4f32_ty, llvm_ptr_ty], [IntrReadMem]>;
+}
+
+let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
+ def int_x86_sse_loadups : GCCBuiltin<"__builtin_ia32_loadups">,
+ Intrinsic<[llvm_v4f32_ty, llvm_ptr_ty], [IntrReadMem]>;
+}
+
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
def int_x86_sse_movmskps : GCCBuiltin<"__builtin_ia32_movmskps">,
Intrinsic<[llvm_int_ty, llvm_v4f32_ty], [InstrNoMem]>;