aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/linear/pointer-arith64.c
diff options
context:
space:
mode:
Diffstat (limited to 'validation/linear/pointer-arith64.c')
-rw-r--r--validation/linear/pointer-arith64.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/validation/linear/pointer-arith64.c b/validation/linear/pointer-arith64.c
new file mode 100644
index 00000000..dad10331
--- /dev/null
+++ b/validation/linear/pointer-arith64.c
@@ -0,0 +1,79 @@
+char *cps(char *data, short pos)
+{
+ data += pos;
+ return data;
+}
+
+int *ipss(int *data, short pos)
+{
+ data += pos;
+ return data;
+}
+int *ipus(int *data, unsigned short pos)
+{
+ data += pos;
+ return data;
+}
+
+int *ipsi(int *data, int pos)
+{
+ data += pos;
+ return data;
+}
+int *ipui(int *data, unsigned int pos)
+{
+ data += pos;
+ return data;
+}
+
+/*
+ * check-name: pointer-arith64
+ * check-command: test-linearize -Wno-decl --arch=generic -m64 $file
+ *
+ * check-output-start
+cps:
+.L0:
+ <entry-point>
+ sext.64 %r2 <- (16) %arg2
+ add.64 %r5 <- %arg1, %r2
+ ret.64 %r5
+
+
+ipss:
+.L2:
+ <entry-point>
+ sext.64 %r10 <- (16) %arg2
+ mul.64 %r11 <- %r10, $4
+ add.64 %r14 <- %arg1, %r11
+ ret.64 %r14
+
+
+ipus:
+.L4:
+ <entry-point>
+ zext.64 %r19 <- (16) %arg2
+ mul.64 %r20 <- %r19, $4
+ add.64 %r23 <- %arg1, %r20
+ ret.64 %r23
+
+
+ipsi:
+.L6:
+ <entry-point>
+ sext.64 %r28 <- (32) %arg2
+ mul.64 %r29 <- %r28, $4
+ add.64 %r32 <- %arg1, %r29
+ ret.64 %r32
+
+
+ipui:
+.L8:
+ <entry-point>
+ zext.64 %r37 <- (32) %arg2
+ mul.64 %r38 <- %r37, $4
+ add.64 %r41 <- %arg1, %r38
+ ret.64 %r41
+
+
+ * check-output-end
+ */