on master help sign in
Fixed the C codegen's bitfield comparison primitives
commit602a3d9b6f954f45be54f6563f6c0ba8abf3c387 authorBenjamin Saunders <besaunde@sfu.ca> dateThu 17 Jan 2013, 21:33 (14 years ago) parent0ffb7b6
1 file changed+20−80
rts/idris_bitstring.c+20−80
rts/idris_bitstring.c+20−80
@@ -110,38 +110,23 @@ VAL idris_b8SRem(VM *vm, VAL a, VAL b) {
110110}
111111
112112VAL idris_b8Lt(VM *vm, VAL a, VAL b) {
113− VAL cl = allocate(vm, sizeof(Closure), 0);
114− SETTY(cl, BITS8);
115− cl->info.bits8 = a->info.bits8 < b->info.bits8;
116− return cl;
113+ return MKINT(a->info.bits8 < b->info.bits8);
117114}
118115
119116VAL idris_b8Gt(VM *vm, VAL a, VAL b) {
120− VAL cl = allocate(vm, sizeof(Closure), 0);
121− SETTY(cl, BITS8);
122− cl->info.bits8 = a->info.bits8 > b->info.bits8;
123− return cl;
117+ return MKINT(a->info.bits8 > b->info.bits8);
124118}
125119
126120VAL idris_b8Eq(VM *vm, VAL a, VAL b) {
127− VAL cl = allocate(vm, sizeof(Closure), 0);
128− SETTY(cl, BITS8);
129− cl->info.bits8 = a->info.bits8 == b->info.bits8;
130− return cl;
121+ return MKINT(a->info.bits8 == b->info.bits8);
131122}
132123
133124VAL idris_b8Lte(VM *vm, VAL a, VAL b) {
134− VAL cl = allocate(vm, sizeof(Closure), 0);
135− SETTY(cl, BITS8);
136− cl->info.bits8 = a->info.bits8 <= b->info.bits8;
137− return cl;
125+ return MKINT(a->info.bits8 <= b->info.bits8);
138126}
139127
140128VAL idris_b8Gte(VM *vm, VAL a, VAL b) {
141− VAL cl = allocate(vm, sizeof(Closure), 0);
142− SETTY(cl, BITS8);
143− cl->info.bits8 = a->info.bits8 >= b->info.bits8;
144− return cl;
129+ return MKINT(a->info.bits8 >= b->info.bits8);
145130}
146131
147132VAL idris_b8Compl(VM *vm, VAL a) {
@@ -245,38 +230,23 @@ VAL idris_b16SRem(VM *vm, VAL a, VAL b) {
245230}
246231
247232VAL idris_b16Lt(VM *vm, VAL a, VAL b) {
248− VAL cl = allocate(vm, sizeof(Closure), 0);
249− SETTY(cl, BITS16);
250− cl->info.bits16 = a->info.bits16 < b->info.bits16;
251− return cl;
233+ return MKINT(a->info.bits16 < b->info.bits16);
252234}
253235
254236VAL idris_b16Gt(VM *vm, VAL a, VAL b) {
255− VAL cl = allocate(vm, sizeof(Closure), 0);
256− SETTY(cl, BITS16);
257− cl->info.bits16 = a->info.bits16 > b->info.bits16;
258− return cl;
237+ return MKINT(a->info.bits16 > b->info.bits16);
259238}
260239
261240VAL idris_b16Eq(VM *vm, VAL a, VAL b) {
262− VAL cl = allocate(vm, sizeof(Closure), 0);
263− SETTY(cl, BITS16);
264− cl->info.bits16 = a->info.bits16 == b->info.bits16;
265− return cl;
241+ return MKINT(a->info.bits16 == b->info.bits16);
266242}
267243
268244VAL idris_b16Lte(VM *vm, VAL a, VAL b) {
269− VAL cl = allocate(vm, sizeof(Closure), 0);
270− SETTY(cl, BITS16);
271− cl->info.bits16 = a->info.bits16 <= b->info.bits16;
272− return cl;
245+ return MKINT(a->info.bits16 <= b->info.bits16);
273246}
274247
275248VAL idris_b16Gte(VM *vm, VAL a, VAL b) {
276− VAL cl = allocate(vm, sizeof(Closure), 0);
277− SETTY(cl, BITS16);
278− cl->info.bits16 = a->info.bits16 >= b->info.bits16;
279− return cl;
249+ return MKINT(a->info.bits16 >= b->info.bits16);
280250}
281251
282252VAL idris_b16Compl(VM *vm, VAL a) {
@@ -380,38 +350,23 @@ VAL idris_b32SRem(VM *vm, VAL a, VAL b) {
380350}
381351
382352VAL idris_b32Lt(VM *vm, VAL a, VAL b) {
383− VAL cl = allocate(vm, sizeof(Closure), 0);
384− SETTY(cl, BITS32);
385− cl->info.bits32 = a->info.bits32 < b->info.bits32;
386− return cl;
353+ return MKINT(a->info.bits32 < b->info.bits32);
387354}
388355
389356VAL idris_b32Gt(VM *vm, VAL a, VAL b) {
390− VAL cl = allocate(vm, sizeof(Closure), 0);
391− SETTY(cl, BITS32);
392− cl->info.bits32 = a->info.bits32 > b->info.bits32;
393− return cl;
357+ return MKINT(a->info.bits32 > b->info.bits32);
394358}
395359
396360VAL idris_b32Eq(VM *vm, VAL a, VAL b) {
397− VAL cl = allocate(vm, sizeof(Closure), 0);
398− SETTY(cl, BITS32);
399− cl->info.bits32 = a->info.bits32 == b->info.bits32;
400− return cl;
361+ return MKINT(a->info.bits32 == b->info.bits32);
401362}
402363
403364VAL idris_b32Lte(VM *vm, VAL a, VAL b) {
404− VAL cl = allocate(vm, sizeof(Closure), 0);
405− SETTY(cl, BITS32);
406− cl->info.bits32 = a->info.bits32 <= b->info.bits32;
407− return cl;
365+ return MKINT(a->info.bits32 <= b->info.bits32);
408366}
409367
410368VAL idris_b32Gte(VM *vm, VAL a, VAL b) {
411− VAL cl = allocate(vm, sizeof(Closure), 0);
412− SETTY(cl, BITS32);
413− cl->info.bits32 = a->info.bits32 >= b->info.bits32;
414− return cl;
369+ return MKINT(a->info.bits32 >= b->info.bits32);
415370}
416371
417372VAL idris_b32Compl(VM *vm, VAL a) {
@@ -515,38 +470,23 @@ VAL idris_b64SRem(VM *vm, VAL a, VAL b) {
515470}
516471
517472VAL idris_b64Lt(VM *vm, VAL a, VAL b) {
518− VAL cl = allocate(vm, sizeof(Closure), 0);
519− SETTY(cl, BITS64);
520− cl->info.bits64 = a->info.bits64 < b->info.bits64;
521− return cl;
473+ return MKINT(a->info.bits64 < b->info.bits64);
522474}
523475
524476VAL idris_b64Gt(VM *vm, VAL a, VAL b) {
525− VAL cl = allocate(vm, sizeof(Closure), 0);
526− SETTY(cl, BITS64);
527− cl->info.bits64 = a->info.bits64 > b->info.bits64;
528− return cl;
477+ return MKINT(a->info.bits64 > b->info.bits64);
529478}
530479
531480VAL idris_b64Eq(VM *vm, VAL a, VAL b) {
532− VAL cl = allocate(vm, sizeof(Closure), 0);
533− SETTY(cl, BITS64);
534− cl->info.bits64 = a->info.bits64 == b->info.bits64;
535− return cl;
481+ return MKINT(a->info.bits64 == b->info.bits64);
536482}
537483
538484VAL idris_b64Lte(VM *vm, VAL a, VAL b) {
539− VAL cl = allocate(vm, sizeof(Closure), 0);
540− SETTY(cl, BITS64);
541− cl->info.bits64 = a->info.bits64 <= b->info.bits64;
542− return cl;
485+ return MKINT(a->info.bits64 <= b->info.bits64);
543486}
544487
545488VAL idris_b64Gte(VM *vm, VAL a, VAL b) {
546− VAL cl = allocate(vm, sizeof(Closure), 0);
547− SETTY(cl, BITS64);
548− cl->info.bits64 = a->info.bits64 >= b->info.bits64;
549− return cl;
489+ return MKINT(a->info.bits64 >= b->info.bits64);
550490}
551491
552492VAL idris_b64Compl(VM *vm, VAL a) {