on master help sign in
Correct codegen for bitstring complements
commite26a1192e309f30e8dc05c6254f8dd3cd2fff7b3 authorBenjamin Saunders <besaunde@sfu.ca> dateSun 20 Jan 2013, 14:32 (14 years ago) parent55c0609
2 files changed+8−4
rts/idris_bitstring.h+4 src/IRTS/CodegenC.hs+4−4
rts/idris_bitstring.h+4
@@ -24,6 +24,7 @@ VAL idris_b8Gt(VM *vm, VAL a, VAL b);
2424VAL idris_b8Eq(VM *vm, VAL a, VAL b);
2525VAL idris_b8Lte(VM *vm, VAL a, VAL b);
2626VAL idris_b8Gte(VM *vm, VAL a, VAL b);
27+VAL idris_b8Compl(VM *vm, VAL a);
2728VAL idris_b8And(VM *vm, VAL a, VAL b);
2829VAL idris_b8Or(VM *vm, VAL a, VAL b);
2930VAL idris_b8Neg(VM *vm, VAL a);
@@ -55,6 +56,7 @@ VAL idris_b16Gt(VM *vm, VAL a, VAL b);
5556VAL idris_b16Eq(VM *vm, VAL a, VAL b);
5657VAL idris_b16Lte(VM *vm, VAL a, VAL b);
5758VAL idris_b16Gte(VM *vm, VAL a, VAL b);
59+VAL idris_b16Compl(VM *vm, VAL a);
5860VAL idris_b16And(VM *vm, VAL a, VAL b);
5961VAL idris_b16Or(VM *vm, VAL a, VAL b);
6062VAL idris_b16Neg(VM *vm, VAL a);
@@ -81,6 +83,7 @@ VAL idris_b32Gt(VM *vm, VAL a, VAL b);
8183VAL idris_b32Eq(VM *vm, VAL a, VAL b);
8284VAL idris_b32Lte(VM *vm, VAL a, VAL b);
8385VAL idris_b32Gte(VM *vm, VAL a, VAL b);
86+VAL idris_b32Compl(VM *vm, VAL a);
8487VAL idris_b32And(VM *vm, VAL a, VAL b);
8588VAL idris_b32Or(VM *vm, VAL a, VAL b);
8689VAL idris_b32Neg(VM *vm, VAL a);
@@ -106,6 +109,7 @@ VAL idris_b64Gt(VM *vm, VAL a, VAL b);
106109VAL idris_b64Eq(VM *vm, VAL a, VAL b);
107110VAL idris_b64Lte(VM *vm, VAL a, VAL b);
108111VAL idris_b64Gte(VM *vm, VAL a, VAL b);
112+VAL idris_b64Compl(VM *vm, VAL a);
109113VAL idris_b64And(VM *vm, VAL a, VAL b);
110114VAL idris_b64Or(VM *vm, VAL a, VAL b);
111115VAL idris_b64Neg(VM *vm, VAL a);
src/IRTS/CodegenC.hs+4−4
@@ -316,7 +316,7 @@ doOp v LB8AShr [x, y] = v ++ "idris_b8AShr(vm, " ++ creg x ++ "," ++ creg y ++ "
316316doOp v LB8And [x, y] = v ++ "idris_b8And(vm, " ++ creg x ++ "," ++ creg y ++ ")"
317317doOp v LB8Or [x, y] = v ++ "idris_b8Or(vm, " ++ creg x ++ "," ++ creg y ++ ")"
318318doOp v LB8Xor [x, y] = v ++ "idris_b8Xor(vm, " ++ creg x ++ "," ++ creg y ++ ")"
319−doOp v LB8Compl [x, y] = v ++ "idris_b8Compl(vm, " ++ creg x ++ "," ++ creg y ++ ")"
319+doOp v LB8Compl [x] = v ++ "idris_b8Compl(vm, " ++ creg x ++ ")"
320320
321321doOp v LB8Plus [x, y] = v ++ "idris_b8Plus(vm, " ++ creg x ++ "," ++ creg y ++ ")"
322322doOp v LB8Minus [x, y] = v ++ "idris_b8Minus(vm, " ++ creg x ++ "," ++ creg y ++ ")"
@@ -345,7 +345,7 @@ doOp v LB16AShr [x, y] = v ++ "idris_b16AShr(vm, " ++ creg x ++ "," ++ creg y ++
345345doOp v LB16And [x, y] = v ++ "idris_b16And(vm, " ++ creg x ++ "," ++ creg y ++ ")"
346346doOp v LB16Or [x, y] = v ++ "idris_b16Or(vm, " ++ creg x ++ "," ++ creg y ++ ")"
347347doOp v LB16Xor [x, y] = v ++ "idris_b16Xor(vm, " ++ creg x ++ "," ++ creg y ++ ")"
348−doOp v LB16Compl [x, y] = v ++ "idris_b16Compl(vm, " ++ creg x ++ "," ++ creg y ++ ")"
348+doOp v LB16Compl [x] = v ++ "idris_b16Compl(vm, " ++ creg x ++ ")"
349349
350350doOp v LB16Plus [x, y] =
351351 v ++ "idris_b16Plus(vm, " ++ creg x ++ "," ++ creg y ++ ")"
@@ -380,7 +380,7 @@ doOp v LB32AShr [x, y] = v ++ "idris_b32AShr(vm, " ++ creg x ++ "," ++ creg y ++
380380doOp v LB32And [x, y] = v ++ "idris_b32And(vm, " ++ creg x ++ "," ++ creg y ++ ")"
381381doOp v LB32Or [x, y] = v ++ "idris_b32Or(vm, " ++ creg x ++ "," ++ creg y ++ ")"
382382doOp v LB32Xor [x, y] = v ++ "idris_b32Xor(vm, " ++ creg x ++ "," ++ creg y ++ ")"
383−doOp v LB32Compl [x, y] = v ++ "idris_b32Compl(vm, " ++ creg x ++ "," ++ creg y ++ ")"
383+doOp v LB32Compl [x] = v ++ "idris_b32Compl(vm, " ++ creg x ++ ")"
384384
385385doOp v LB32Plus [x, y] =
386386 v ++ "idris_b32Plus(vm, " ++ creg x ++ "," ++ creg y ++ ")"
@@ -414,7 +414,7 @@ doOp v LB64AShr [x, y] = v ++ "idris_b64AShr(vm, " ++ creg x ++ "," ++ creg y ++
414414doOp v LB64And [x, y] = v ++ "idris_b64And(vm, " ++ creg x ++ "," ++ creg y ++ ")"
415415doOp v LB64Or [x, y] = v ++ "idris_b64Or(vm, " ++ creg x ++ "," ++ creg y ++ ")"
416416doOp v LB64Xor [x, y] = v ++ "idris_b64Xor(vm, " ++ creg x ++ "," ++ creg y ++ ")"
417−doOp v LB64Compl [x, y] = v ++ "idris_b64Compl(vm, " ++ creg x ++ "," ++ creg y ++ ")"
417+doOp v LB64Compl [x] = v ++ "idris_b64Compl(vm, " ++ creg x ++ ")"
418418
419419doOp v LB64Plus [x, y] =
420420 v ++ "idris_b64Plus(vm, " ++ creg x ++ "," ++ creg y ++ ")"