From d044d6ee2c788344202d5b2520f0f5d7821e925f Mon Sep 17 00:00:00 2001 From: Andrew Lenharth Date: Sun, 24 Sep 2006 13:13:10 +0000 Subject: [PATCH] jump table note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30591 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Alpha/README.txt | 150 ++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/lib/Target/Alpha/README.txt b/lib/Target/Alpha/README.txt index 2d1909a42c5..cde71402941 100644 --- a/lib/Target/Alpha/README.txt +++ b/lib/Target/Alpha/README.txt @@ -1,3 +1,153 @@ +Fix jump table support. currently it uses 64bit absolute address. +gcc uses gprel32. This way I won't keep fighting Evan as he keeps +breaking 64bit entries in jump tables... + +#include +#include + +int main(int x, char** y) +{ +char* foo; +switch(x) { +case 1: +foo = "1"; +break; +case 2: +foo = "2"; +break; +case 3: +foo = "3"; +break; +case 4: +foo = "4"; +break; +case 5: +foo = "5"; +break; +case 6: +foo = "6"; +break; +case 7: +foo = "7"; +break; +case 8: +foo = "8"; +break; +}; +print(foo); +return 0; + +} + + + .set noreorder + .set volatile + .set noat + .set nomacro + .section .rodata.str1.1,"aMS",@progbits,1 +$LC6: + .ascii "7\0" +$LC7: + .ascii "8\0" +$LC0: + .ascii "1\0" +$LC1: + .ascii "2\0" +$LC2: + .ascii "3\0" +$LC3: + .ascii "4\0" +$LC4: + .ascii "5\0" +$LC5: + .ascii "6\0" + .text + .align 2 + .align 4 + .globl main + .ent main +main: + .frame $30,16,$26,0 + .mask 0x4000000,-16 + ldah $29,0($27) !gpdisp!1 + lda $29,0($29) !gpdisp!1 +$main..ng: + zapnot $16,15,$16 + lda $30,-16($30) + cmpule $16,8,$1 + stq $26,0($30) + .prologue 1 + beq $1,$L2 + ldah $6,$L11($29) !gprelhigh + lda $5,$L11($6) !gprellow + s4addq $16,$5,$0 + ldl $2,0($0) + addq $29,$2,$3 + jmp $31,($3),$L2 + .section .rodata + .align 2 + .align 2 +$L11: + .gprel32 $L2 + .gprel32 $L3 + .gprel32 $L4 + .gprel32 $L5 + .gprel32 $L6 + .gprel32 $L7 + .gprel32 $L8 + .gprel32 $L9 + .gprel32 $L10 + .text +$L9: + ldah $20,$LC6($29) !gprelhigh + lda $4,$LC6($20) !gprellow + .align 4 +$L2: + mov $4,$16 + ldq $27,print($29) !literal!2 + jsr $26,($27),print !lituse_jsr!2 + ldah $29,0($26) !gpdisp!3 + mov $31,$0 + bis $31,$31,$31 + lda $29,0($29) !gpdisp!3 + ldq $26,0($30) + lda $30,16($30) + ret $31,($26),1 +$L10: + ldah $21,$LC7($29) !gprelhigh + lda $4,$LC7($21) !gprellow + br $31,$L2 +$L3: + ldah $7,$LC0($29) !gprelhigh + lda $4,$LC0($7) !gprellow + br $31,$L2 +$L4: + ldah $8,$LC1($29) !gprelhigh + lda $4,$LC1($8) !gprellow + br $31,$L2 +$L5: + ldah $16,$LC2($29) !gprelhigh + lda $4,$LC2($16) !gprellow + br $31,$L2 +$L6: + ldah $17,$LC3($29) !gprelhigh + lda $4,$LC3($17) !gprellow + br $31,$L2 +$L7: + ldah $18,$LC4($29) !gprelhigh + lda $4,$LC4($18) !gprellow + br $31,$L2 +$L8: + ldah $19,$LC5($29) !gprelhigh + lda $4,$LC5($19) !gprellow + br $31,$L2 + .end main + .section .note.GNU-stack,"",@progbits + .ident "GCC: (GNU) 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)" + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fix Ordered/Unordered FP stuff