summaryrefslogtreecommitdiff
path: root/tools/asm-processor/tests/test2.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/asm-processor/tests/test2.c')
-rw-r--r--tools/asm-processor/tests/test2.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/tools/asm-processor/tests/test2.c b/tools/asm-processor/tests/test2.c
new file mode 100644
index 0000000..15969fe
--- /dev/null
+++ b/tools/asm-processor/tests/test2.c
@@ -0,0 +1,69 @@
+const char buf1[1] = {1};
+float func1(void) {
+ "func1";
+ return 0.1f;
+}
+const char buf2[1] = {2};
+void func2(void) {
+ *(volatile float*)0 = -3.5792360305786133f;
+ *(volatile float*)0 = -3.5792362689971924f;
+ // "func2";
+ // return 0.2f;
+}
+const char buf3[1] = {3};
+int func3(int x) {
+ switch(x) {
+ case 0:
+ return 1;
+ case 1:
+ return 2;
+ case 2:
+ return 3;
+ case 3:
+ return 4;
+ case 4:
+ return 5;
+ case 5:
+ return 4;
+ case 6:
+ return 4;
+ case 7:
+ return 4;
+ default:
+ return 3;
+ }
+}
+
+#if 1
+GLOBAL_ASM(
+.rdata
+.word 0x66756e63 # func
+.word 0x34000000 # 4\0\0\0
+.word jumptarget + 4
+
+.late_rodata
+glabel rv
+.word 0x3e4ccccd # 0.2f
+.word jumptarget + 8
+
+.text
+glabel func4
+lui $at, %hi(rv)
+glabel jumptarget
+jr $ra
+lwc1 $f0, %lo(rv)($at)
+jr $ra
+nop
+jr $ra
+nop
+jr $ra
+nop
+jr $ra
+nop
+)
+#else
+float func4(void) {
+ "func4";
+ return 0.2f;
+}
+#endif