diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2016-03-03 13:45:54 -0500 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2016-03-03 13:45:54 -0500 |
commit | b0ce949583fd2545dbe7c68f65483e658148b680 (patch) | |
tree | 20aedaff0885443b2681ebc5341ce52657da8720 /lisc/test/abi2.ssa | |
parent | 315a7a6f720fc44387dca565af1e1764e572e723 (diff) | |
download | roux-b0ce949583fd2545dbe7c68f65483e658148b680.tar.gz |
new basic fp abi test
Diffstat (limited to 'lisc/test/abi2.ssa')
-rw-r--r-- | lisc/test/abi2.ssa | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lisc/test/abi2.ssa b/lisc/test/abi2.ssa new file mode 100644 index 0000000..15b3fa3 --- /dev/null +++ b/lisc/test/abi2.ssa @@ -0,0 +1,18 @@ +type :fps = { s, b, s } + +function s $sum(:fps %p) { +@start + %f1 =s load %p + %p8 =l add 8, %p + %f2 =s load %p8 + %s =s add %f1, %f2 + ret %s +} + +# >>> driver +# typedef struct { float f1; char b; float f2; } fps; +# extern float sum(fps); +# int main() { fps x = { 1.23, -1, 2.34 }; return !(sum(x) == 1.23f+2.34f); } +# /* Note the f above are important +# * otherwise C does double operations. */ +# <<< |