mirror of
https://github.com/odin-lang/Odin.git
synced 2026-07-28 18:16:24 +00:00
Merge pull request #6924 from tf2spi/6815-patch-simd-min-max
Fix misuse of lb_emit_(min|max) in simd_(min|max)
This commit is contained in:
@@ -1699,7 +1699,8 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
|
||||
return res;
|
||||
case BuiltinProc_simd_min:
|
||||
if (is_float) {
|
||||
return lb_emit_min(p, res.type, arg0, arg1);
|
||||
LLVMValueRef cond = LLVMBuildFCmp(p->builder, LLVMRealOLT, arg0.value, arg1.value, "");
|
||||
res.value = LLVMBuildSelect(p->builder, cond, arg0.value, arg1.value, "");
|
||||
} else {
|
||||
LLVMValueRef cond = LLVMBuildICmp(p->builder, is_signed ? LLVMIntSLT : LLVMIntULT, arg0.value, arg1.value, "");
|
||||
res.value = LLVMBuildSelect(p->builder, cond, arg0.value, arg1.value, "");
|
||||
@@ -1707,7 +1708,8 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
|
||||
return res;
|
||||
case BuiltinProc_simd_max:
|
||||
if (is_float) {
|
||||
return lb_emit_max(p, res.type, arg0, arg1);
|
||||
LLVMValueRef cond = LLVMBuildFCmp(p->builder, LLVMRealOGT, arg0.value, arg1.value, "");
|
||||
res.value = LLVMBuildSelect(p->builder, cond, arg0.value, arg1.value, "");
|
||||
} else {
|
||||
LLVMValueRef cond = LLVMBuildICmp(p->builder, is_signed ? LLVMIntSGT : LLVMIntUGT, arg0.value, arg1.value, "");
|
||||
res.value = LLVMBuildSelect(p->builder, cond, arg0.value, arg1.value, "");
|
||||
|
||||
Reference in New Issue
Block a user