added support for assert
This commit is contained in:
@@ -2064,42 +2064,6 @@ define void @__memset64(i8 * %dst, i8 %val, i64 %len) alwaysinline {
|
||||
ret void
|
||||
}
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; assert
|
||||
|
||||
declare i32 @puts(i8*)
|
||||
declare void @abort() noreturn
|
||||
|
||||
define void @__do_assert_uniform(i8 *%str, i1 %test, <WIDTH x MASK> %mask) {
|
||||
br i1 %test, label %ok, label %fail
|
||||
|
||||
fail:
|
||||
%call = call i32 @puts(i8* %str)
|
||||
call void @abort() noreturn
|
||||
unreachable
|
||||
|
||||
ok:
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
define void @__do_assert_varying(i8 *%str, <WIDTH x MASK> %test,
|
||||
<WIDTH x MASK> %mask) {
|
||||
%nottest = xor <WIDTH x MASK> %test,
|
||||
< forloop(i, 1, eval(WIDTH-1), `MASK -1, ') MASK -1 >
|
||||
%nottest_and_mask = and <WIDTH x MASK> %nottest, %mask
|
||||
%mm = call i64 @__movmsk(<WIDTH x MASK> %nottest_and_mask)
|
||||
%all_ok = icmp eq i64 %mm, 0
|
||||
br i1 %all_ok, label %ok, label %fail
|
||||
|
||||
fail:
|
||||
%call = call i32 @puts(i8* %str)
|
||||
call void @abort() noreturn
|
||||
unreachable
|
||||
|
||||
ok:
|
||||
ret void
|
||||
}
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; new/delete
|
||||
|
||||
Reference in New Issue
Block a user