1#include "llama-memory.h"
2
3llama_memory_status llama_memory_status_combine(llama_memory_status s0, llama_memory_status s1) {
4 bool has_update = false;
5
6 switch (s0) {
7 case LLAMA_MEMORY_STATUS_SUCCESS:
8 {
9 has_update = true;
10 break;
11 }
12 case LLAMA_MEMORY_STATUS_NO_UPDATE:
13 {
14 break;
15 }
16 case LLAMA_MEMORY_STATUS_FAILED_PREPARE:
17 case LLAMA_MEMORY_STATUS_FAILED_COMPUTE:
18 {
19 return s0;
20 }
21 }
22
23 switch (s1) {
24 case LLAMA_MEMORY_STATUS_SUCCESS:
25 {
26 has_update = true;
27 break;
28 }
29 case LLAMA_MEMORY_STATUS_NO_UPDATE:
30 {
31 break;
32 }
33 case LLAMA_MEMORY_STATUS_FAILED_PREPARE:
34 case LLAMA_MEMORY_STATUS_FAILED_COMPUTE:
35 {
36 return s1;
37 }
38 }
39
40 // if either status has an update, then the combined status has an update
41 return has_update ? LLAMA_MEMORY_STATUS_SUCCESS : LLAMA_MEMORY_STATUS_NO_UPDATE;
42}
43
44bool llama_memory_status_is_fail(llama_memory_status status) {
45 switch (status) {
46 case LLAMA_MEMORY_STATUS_SUCCESS:
47 case LLAMA_MEMORY_STATUS_NO_UPDATE:
48 {
49 return false;
50 }
51 case LLAMA_MEMORY_STATUS_FAILED_PREPARE:
52 case LLAMA_MEMORY_STATUS_FAILED_COMPUTE:
53 {
54 return true;
55 }
56 }
57
58 return false;
59}
60