ia64-dyn-asm.S revision 16192f7eac22ab023e8ef34e3691638599907747
1ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm .globl func_add1, func_add1_end 2ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm .proc func_add1 3ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidmfunc_add1: 416192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mib; add r8 = 1, r32 5ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm nop.i 0 6ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm br.ret.sptk.many rp 7ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm} 8ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidmfunc_add1_end: 9ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm .endp func_add1 10ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm 11ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm .globl func_add3, func_add3_end 12ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm .proc func_add3 13ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidmfunc_add3: 1416192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; alloc loc0 = ar.pfs, 2, 1, 2, 0 150d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov r2 = sp 160d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm add sp = -16, sp 170d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 1816192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mii; ld8 r8 = [in1], 8 // load the function pointer 190d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov r3 = rp 200d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov rp = loc0 // trash rp 21ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm} ;; 2216192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; ld8 r9 = [r8], 8 // load the entry-point 230d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm st8 [r2] = r3 24ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm mov out0 = in0 25ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm} ;; 2616192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mii; ld8 gp = [r8] // load the gp 27ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm mov b6 = r9 280d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov out1 = in1 290d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} 3016192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mib; nop 0 310d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm nop 0 32ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm br.call.sptk rp = b6 33ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm} 3416192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; add r2 = 16, sp 350d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm ;; 360d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm ld8 r3 = [r2] // r3 = saved rp 370d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov ar.pfs = loc0 380d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 3916192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mii; nop 0 400d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov rp = r3 410d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm adds sp = 16, sp 420d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 4316192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mib; st8 [sp] = in0 // trash rp save location 440d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm add r8 = 2, r8 45ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm br.ret.sptk.many rp 46ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm} 47ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidmfunc_add3_end: 48ea8a74ba29d4316f5b3337293b75a71a9eeaa8ddhp.com!davidm .endp func_add3 490d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm 500d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm .globl func_vframe, func_vframe_end 510d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm .proc func_vframe 520d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidmfunc_vframe: 5316192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mii; alloc r16 = ar.pfs, 1, 2, 0, 0 // 0 540d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov loc0 = rp 550d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov loc1 = sp 560d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 5716192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; sub sp = sp, in0 580d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm st8 [loc1] = r16 590d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov r2 = -99 // 0 600d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 6116192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mii; nop 0 620d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov rp = r2 630d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov ar.pfs = r0 640d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} 6516192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mib; mov r16 = r2 660d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm tbit.nz p6, p0 = in0, 4 6716192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm(p6) br.cond.sptk.many .exit 680d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 6916192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; ld8 r16 = [loc1] 700d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm ;; 710d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov r3 = loc0 // 8 move saved rp to r3 720d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov ar.pfs = r16 730d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 7416192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; mov sp = loc1 // 10 750d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm st8 [loc1] = r0 // trash saved pfs 760d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov loc0 = r2 770d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 7816192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mib; mov r8 = 10 790d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov rp = r3 800d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm br.ret.sptk.many rp 810d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} 8216192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm.exit: 8316192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; ld8 r16 = [loc1] 840d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm ;; 850d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm sub sp = 32, sp 860d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov ar.pfs = r16 870d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} ;; 8816192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mmi; mov sp = loc1 890d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm st8 [loc1] = r0 // trash saved pfs 900d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov rp = loc0 910d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} 9216192f7eac22ab023e8ef34e3691638599907747mostang.com!davidm{.mib; nop 0 930d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm mov r8 = 4 940d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm br.ret.sptk.many rp 950d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm} 960d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidmfunc_vframe_end: 970d7396a027d2a7e5480dde9deaf5398957adb829mostang.com!davidm .endp func_vframe 98