aboutsummaryrefslogtreecommitdiffstats
path: root/test/kvx/instr/individual/indirect_call.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/kvx/instr/individual/indirect_call.c')
-rw-r--r--test/kvx/instr/individual/indirect_call.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/kvx/instr/individual/indirect_call.c b/test/kvx/instr/individual/indirect_call.c
new file mode 100644
index 00000000..f376c00a
--- /dev/null
+++ b/test/kvx/instr/individual/indirect_call.c
@@ -0,0 +1,33 @@
+#include "framework.h"
+
+long long sum(long long a, long long b){
+ return a+b;
+}
+
+long long diff(long long a, long long b){
+ return a-b;
+}
+
+long long mul(long long a, long long b){
+ return a*b;
+}
+
+long long make(long long a){
+ return a;
+}
+
+BEGIN_TEST(long long)
+{
+ long long d = 3;
+ long long (*op)(long long, long long);
+
+ if (a % d == 0)
+ op = sum;
+ else if (a % d == 1)
+ op = diff;
+ else
+ op = mul;
+
+ c += op(make(a), make(b));
+}
+END_TEST64()