0N/A! Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
0N/A! DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A!
0N/A! This code is free software; you can redistribute it and/or modify it
0N/A! under the terms of the GNU General Public License version 2 only, as
2362N/A! published by the Free Software Foundation. Oracle designates this
0N/A! particular file as subject to the "Classpath" exception as provided
2362N/A! by Oracle in the LICENSE file that accompanied this code.
0N/A!
0N/A! This code is distributed in the hope that it will be useful, but WITHOUT
0N/A! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A! FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A! version 2 for more details (a copy is included in the LICENSE file that
0N/A! accompanied this code).
0N/A!
0N/A! You should have received a copy of the GNU General Public License version
0N/A! 2 along with this work; if not, write to the Free Software Foundation,
0N/A! Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A!
2362N/A! Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A! or visit www.oracle.com if you need additional information or have any
2362N/A! questions.
0N/A!
0N/A! This file contains inline procedures for VIS instructions in 64-bit mode.
0N/A!
0N/A!--------------------------------------------------------------------
0N/A! Pure edge handling instructions
0N/A!
0N/A! int vis_edge8(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge8,16
0N/A edge8 %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge8l(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge8l,16
0N/A edge8l %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge16(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge16,16
0N/A edge16 %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge16l(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge16l,16
0N/A edge16l %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge32(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge32,16
0N/A edge32 %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge32l(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge32l,16
0N/A edge32l %o0,%o1,%o0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Edge handling instructions with negative return values if cc set
0N/A!
0N/A! int vis_edge8cc(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge8cc,16
0N/A edge8 %o0,%o1,%o0
0N/A mov 0,%o1
0N/A movgu %xcc,-1024,%o1
0N/A or %o1,%o0,%o0
0N/A .end
0N/A!
0N/A! int vis_edge8lcc(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge8lcc,16
0N/A edge8l %o0,%o1,%o0
0N/A mov 0,%o1
0N/A movgu %xcc,-1024,%o1
0N/A or %o1,%o0,%o0
0N/A .end
0N/A!
0N/A! int vis_edge16cc(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge16cc,16
0N/A edge16 %o0,%o1,%o0
0N/A mov 0,%o1
0N/A movgu %xcc,-1024,%o1
0N/A or %o1,%o0,%o0
0N/A .end
0N/A!
0N/A! int vis_edge16lcc(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge16lcc,16
0N/A edge16l %o0,%o1,%o0
0N/A mov 0,%o1
0N/A movgu %xcc,-1024,%o1
0N/A or %o1,%o0,%o0
0N/A .end
0N/A!
0N/A! int vis_edge32cc(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge32cc,16
0N/A edge32 %o0,%o1,%o0
0N/A mov 0,%o1
0N/A movgu %xcc,-1024,%o1
0N/A or %o1,%o0,%o0
0N/A .end
0N/A!
0N/A! int vis_edge32lcc(void */*frs1*/, void */*frs2*/);
0N/A!
0N/A .inline vis_edge32lcc,16
0N/A edge32l %o0,%o1,%o0
0N/A mov 0,%o1
0N/A movgu %xcc,-1024,%o1
0N/A or %o1,%o0,%o0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Alignment instructions
0N/A!
0N/A! void *vis_alignaddr(void */*rs1*/, int /*rs2*/);
0N/A!
0N/A .inline vis_alignaddr,12
0N/A alignaddr %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! void *vis_alignaddrl(void */*rs1*/, int /*rs2*/);
0N/A!
0N/A .inline vis_alignaddrl,12
0N/A alignaddrl %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! double vis_faligndata(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_faligndata,16
0N/A faligndata %f0,%f2,%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Partitioned comparison instructions
0N/A!
0N/A! int vis_fcmple16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmple16,16
0N/A fcmple16 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmpne16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmpne16,16
0N/A fcmpne16 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmple32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmple32,16
0N/A fcmple32 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmpne32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmpne32,16
0N/A fcmpne32 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmpgt16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmpgt16,16
0N/A fcmpgt16 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmpeq16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmpeq16,16
0N/A fcmpeq16 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmpgt32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmpgt32,16
0N/A fcmpgt32 %f0,%f2,%o0
0N/A .end
0N/A!
0N/A! int vis_fcmpeq32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fcmpeq32,16
0N/A fcmpeq32 %f0,%f2,%o0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Partitioned arithmetic
0N/A!
0N/A! double vis_fmul8x16(float /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fmul8x16,12
0N/A fmul8x16 %f1,%f2,%f0
0N/A .end
0N/A!
0N/A! double vis_fmul8x16_dummy(float /*frs1*/, int /*dummy*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fmul8x16_dummy,16
0N/A fmul8x16 %f1,%f4,%f0
0N/A .end
0N/A!
0N/A! double vis_fmul8x16au(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fmul8x16au,8
0N/A fmul8x16au %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fmul8x16al(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fmul8x16al,8
0N/A fmul8x16al %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fmul8sux16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fmul8sux16,16
0N/A fmul8sux16 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! double vis_fmul8ulx16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fmul8ulx16,16
0N/A fmul8ulx16 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! double vis_fmuld8sux16(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fmuld8sux16,8
0N/A fmuld8sux16 %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fmuld8ulx16(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fmuld8ulx16,8
0N/A fmuld8ulx16 %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fpadd16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpadd16,16
0N/A fpadd16 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fpadd16s(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fpadd16s,8
0N/A fpadd16s %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fpadd32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpadd32,16
0N/A fpadd32 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fpadd32s(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fpadd32s,8
0N/A fpadd32s %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fpsub16(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpsub16,16
0N/A fpsub16 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fpsub16s(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fpsub16s,8
0N/A fpsub16s %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fpsub32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpsub32,16
0N/A fpsub32 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fpsub32s(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fpsub32s,8
0N/A fpsub32s %f1,%f3,%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Pixel packing
0N/A!
0N/A! float vis_fpack16(double /*frs2*/);
0N/A!
0N/A .inline vis_fpack16,8
0N/A fpack16 %f0,%f0
0N/A .end
0N/A!
0N/A! double vis_fpack32(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpack32,16
0N/A fpack32 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fpackfix(double /*frs2*/);
0N/A!
0N/A .inline vis_fpackfix,8
0N/A fpackfix %f0,%f0
0N/A .end
0N/A!
0N/A! double vis_fpack16_pair(double /*frs2*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpack16_pair,16
0N/A fpack16 %f0,%f0
0N/A fpack16 %f2,%f1
0N/A .end
0N/A!
0N/A! double vis_fpackfix_pair(double /*frs2*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpackfix_pair,16
0N/A fpackfix %f0,%f0
0N/A fpackfix %f2,%f1
0N/A .end
0N/A!
0N/A! void vis_st2_fpack16(double, double, double *);
0N/A!
0N/A .inline vis_st2_fpack16,24
0N/A fpack16 %f0,%f0
0N/A fpack16 %f2,%f1
0N/A st %f0,[%o2+0]
0N/A st %f1,[%o2+4]
0N/A .end
0N/A!
0N/A! void vis_std_fpack16(double, double, double *);
0N/A!
0N/A .inline vis_std_fpack16,24
0N/A fpack16 %f0,%f0
0N/A fpack16 %f2,%f1
0N/A std %f0,[%o2]
0N/A .end
0N/A!
0N/A! void vis_st2_fpackfix(double, double, double *);
0N/A!
0N/A .inline vis_st2_fpackfix,24
0N/A fpackfix %f0,%f0
0N/A fpackfix %f2,%f1
0N/A st %f0,[%o2+0]
0N/A st %f1,[%o2+4]
0N/A .end
0N/A!
0N/A! double vis_fpack16_to_hi(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpack16_to_hi,16
0N/A fpack16 %f2,%f0
0N/A .end
0N/A!
0N/A! double vis_fpack16_to_lo(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fpack16_to_lo,16
0N/A fpack16 %f2,%f1
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Motion estimation
0N/A!
0N/A! double vis_pxldist64(double accum /*frd*/, double pxls1 /*frs1*/,
0N/A! double pxls2 /*frs2*/);
0N/A!
0N/A .inline vis_pxldist64,24
0N/A pdist %f2,%f4,%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Channel merging
0N/A!
0N/A! double vis_fpmerge(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fpmerge,8
0N/A fpmerge %f1,%f3,%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Pixel expansion
0N/A!
0N/A! double vis_fexpand(float /*frs2*/);
0N/A!
0N/A .inline vis_fexpand,4
0N/A fexpand %f1,%f0
0N/A .end
0N/A!
0N/A! double vis_fexpand_hi(double /*frs2*/);
0N/A!
0N/A .inline vis_fexpand_hi,8
0N/A fexpand %f0,%f0
0N/A .end
0N/A!
0N/A! double vis_fexpand_lo(double /*frs2*/);
0N/A!
0N/A .inline vis_fexpand_lo,8
0N/A fexpand %f1,%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Bitwise logical operations
0N/A!
0N/A! double vis_fnor(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fnor,16
0N/A fnor %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fnors(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fnors,8
0N/A fnors %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fandnot(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fandnot,16
0N/A fandnot1 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fandnots(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fandnots,8
0N/A fandnot1s %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fnot(double /*frs1*/);
0N/A!
0N/A .inline vis_fnot,8
0N/A fnot1 %f0,%f0
0N/A .end
0N/A!
0N/A! float vis_fnots(float /*frs1*/);
0N/A!
0N/A .inline vis_fnots,4
0N/A fnot1s %f1,%f0
0N/A .end
0N/A!
0N/A! double vis_fxor(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fxor,16
0N/A fxor %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fxors(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fxors,8
0N/A fxors %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fnand(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fnand,16
0N/A fnand %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fnands(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fnands,8
0N/A fnands %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fand(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fand,16
0N/A fand %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fands(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fands,8
0N/A fands %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fxnor(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fxnor,16
0N/A fxnor %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fxnors(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fxnors,8
0N/A fxnors %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fsrc(double /*frs1*/);
0N/A!
0N/A .inline vis_fsrc,8
0N/A fsrc1 %f0,%f0
0N/A .end
0N/A!
0N/A! float vis_fsrcs(float /*frs1*/);
0N/A!
0N/A .inline vis_fsrcs,4
0N/A fsrc1s %f1,%f0
0N/A .end
0N/A!
0N/A! double vis_fornot(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_fornot,16
0N/A fornot1 %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fornots(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fornots,8
0N/A fornot1s %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_for(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_for,16
0N/A for %f0,%f2,%f0
0N/A .end
0N/A!
0N/A! float vis_fors(float /*frs1*/, float /*frs2*/);
0N/A!
0N/A .inline vis_fors,8
0N/A fors %f1,%f3,%f0
0N/A .end
0N/A!
0N/A! double vis_fzero(void);
0N/A!
0N/A .inline vis_fzero,0
0N/A fzero %f0
0N/A .end
0N/A!
0N/A! float vis_fzeros(void);
0N/A!
0N/A .inline vis_fzeros,0
0N/A fzeros %f0
0N/A .end
0N/A!
0N/A! double vis_fone(void);
0N/A!
0N/A .inline vis_fone,0
0N/A fone %f0
0N/A .end
0N/A!
0N/A! float vis_fones(void);
0N/A!
0N/A .inline vis_fones,0
0N/A fones %f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Partial store instructions
0N/A!
0N/A! void vis_stdfa_ASI_PST8P(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST8P,20
0N/A stda %f0,[%o1]%o2,0xc0 ! ASI_PST8_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST8PL(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST8PL,20
0N/A stda %f0,[%o1]%o2,0xc8 ! ASI_PST8_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST8S(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST8S,20
0N/A stda %f0,[%o1]%o2,0xc1 ! ASI_PST8_S
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST8P_int_pair(void * /*rs1*/, void * /*rs2*/, void * /*rs3*/, int /*rmask*/);;
0N/A!
0N/A .inline vis_stdfa_ASI_PST8P_int_pair,28
0N/A ld [%o0],%f4
0N/A ld [%o1],%f5
0N/A stda %f4,[%o2]%o3,0xc0 ! ASI_PST8_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST16P(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST16P,20
0N/A stda %f0,[%o1]%o2,0xc2 ! ASI_PST16_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST16PL(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST16PL,20
0N/A stda %f0,[%o1]%o2,0xca ! ASI_PST16_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST16S(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST16S,20
0N/A stda %f0,[%o1]%o2,0xc3 ! ASI_PST16_S
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST32P(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST32P,20
0N/A stda %f0,[%o1]%o2,0xc4 ! ASI_PST32_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST32PL(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST32PL,20
0N/A stda %f0,[%o1]%o2,0xcc ! ASI_PST32_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PST32S(double /*frd*/, void * /*rs1*/, int /*rmask*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PST32S,20
0N/A stda %f0,[%o1]%o2,0xc5 ! ASI_PST32_S
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Byte & short store instructions
0N/A!
0N/A! void vis_stdfa_ASI_FL8P(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL8P,16
0N/A stda %f0,[%o1]0xd0 ! ASI_FL8_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL8P_index(double /*frd*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL8P_index,24
0N/A stda %f0,[%o1+%o2]0xd0 ! ASI_FL8_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL8S(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL8S,16
0N/A stda %f0,[%o1]0xd1 ! ASI_FL8_S
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL16P(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL16P,16
0N/A stda %f0,[%o1]0xd2 ! ASI_FL16_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL16P_index(double /*frd*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL16P_index,24
0N/A stda %f0,[%o1+%o2]0xd2 ! ASI_FL16_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL16S(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL16S,16
0N/A stda %f0,[%o1]0xd3 ! ASI_FL16_S
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL8PL(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL8PL,16
0N/A stda %f0,[%o1]0xd8 ! ASI_FL8_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL8PL_index(double /*frd*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL8PL_index,24
0N/A stda %f0,[%o1+%o2]0xd8 ! ASI_FL8_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL8SL(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL8SL,16
0N/A stda %f0,[%o1]0xd9 ! ASI_FL8_SL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL16PL(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL16PL,16
0N/A stda %f0,[%o1]0xda ! ASI_FL16_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL16PL_index(double /*frd*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL16PL_index,24
0N/A stda %f0,[%o1+%o2]0xda ! ASI_FL16_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_FL16SL(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_FL16SL,16
0N/A stda %f0,[%o1]0xdb ! ASI_FL16_SL
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Byte & short load instructions
0N/A!
0N/A! double vis_lddfa_ASI_FL8P(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8P,8
0N/A ldda [%o0]0xd0,%f0 ! ASI_FL8_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8P_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8P_index,16
0N/A ldda [%o0+%o1]0xd0,%f0 ! ASI_FL8_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8P_hi(void * /*rs1*/, unsigned int /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8P_hi,12
0N/A sra %o1,16,%o1
0N/A ldda [%o0+%o1]0xd0,%f0 ! ASI_FL8_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8P_lo(void * /*rs1*/, unsigned int /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8P_lo,12
0N/A sll %o1,16,%o1
0N/A sra %o1,16,%o1
0N/A ldda [%o0+%o1]0xd0,%f0 ! ASI_FL8_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8S(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8S,8
0N/A ldda [%o0]0xd1,%f0 ! ASI_FL8_S
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL16P(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL16P,8
0N/A ldda [%o0]0xd2,%f0 ! ASI_FL16_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL16P_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL16P_index,16
0N/A ldda [%o0+%o1]0xd2,%f0 ! ASI_FL16_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL16S(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL16S,8
0N/A ldda [%o0]0xd3,%f0 ! ASI_FL16_S
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8PL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8PL,8
0N/A ldda [%o0]0xd8,%f0 ! ASI_FL8_PL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8PL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8PL_index,16
0N/A ldda [%o0+%o1]0xd8,%f0 ! ASI_FL8_PL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL8SL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL8SL,8
0N/A ldda [%o0]0xd9,%f0 ! ASI_FL8_SL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL16PL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL16PL,8
0N/A ldda [%o0]0xda,%f0 ! ASI_FL16_PL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL16PL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL16PL_index,16
0N/A ldda [%o0+%o1]0xda,%f0 ! ASI_FL16_PL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_FL16SL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_FL16SL,8
0N/A ldda [%o0]0xdb,%f0 ! ASI_FL16_SL
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Graphics status register
0N/A!
0N/A! unsigned int vis_read_gsr32(void);
0N/A!
0N/A .inline vis_read_gsr32,0
0N/A rd %gsr,%o0
0N/A .end
0N/A!
0N/A! void vis_write_gsr32(unsigned int /* GSR */);
0N/A!
0N/A .inline vis_write_gsr32,4
0N/A wr %g0,%o0,%gsr
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Voxel texture mapping
0N/A!
0N/A! unsigned long vis_array8(unsigned long /*rs1 */, int /*rs2*/);
0N/A!
0N/A .inline vis_array8,12
0N/A array8 %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! unsigned long vis_array16(unsigned long /*rs1*/, int /*rs2*/);
0N/A!
0N/A .inline vis_array16,12
0N/A array16 %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! unsigned long vis_array32(unsigned long /*rs1*/, int /*rs2*/);
0N/A!
0N/A .inline vis_array32,12
0N/A array32 %o0,%o1,%o0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Register aliasing and type casts
0N/A!
0N/A! float vis_read_hi(double /* frs1 */);
0N/A!
0N/A .inline vis_read_hi,8
0N/A fmovs %f0,%f0
0N/A .end
0N/A!
0N/A! float vis_read_lo(double /* frs1 */);
0N/A!
0N/A .inline vis_read_lo,8
0N/A fmovs %f1,%f0 ! %f0 = low word (frs1); return %f0;
0N/A .end
0N/A!
0N/A! double vis_write_hi(double /* frs1 */, float /* frs2 */);
0N/A!
0N/A .inline vis_write_hi,12
0N/A fmovs %f3,%f0 ! %f3 = float frs2; return %f0:f1;
0N/A .end
0N/A!
0N/A! double vis_write_lo(double /* frs1 */, float /* frs2 */);
0N/A!
0N/A .inline vis_write_lo,12
0N/A fmovs %f3,%f1 ! %f3 = float frs2; return %f0:f1;
0N/A .end
0N/A!
0N/A! double vis_freg_pair(float /* frs1 */, float /* frs2 */);
0N/A!
0N/A .inline vis_freg_pair,8
0N/A fmovs %f1,%f0
0N/A fmovs %f3,%f1
0N/A .end
0N/A!
0N/A! float vis_to_float(unsigned int /*value*/);
0N/A!
0N/A .inline vis_to_float,4
0N/A st %o0,[%sp+2183]
0N/A ld [%sp+2183],%f0
0N/A .end
0N/A!
0N/A! double vis_to_double(unsigned int /*value1*/, unsigned int /*value2*/);
0N/A!
0N/A .inline vis_to_double,8
0N/A st %o0,[%sp+2183]
0N/A ld [%sp+2183],%f0
0N/A st %o1,[%sp+2183]
0N/A ld [%sp+2183],%f1
0N/A .end
0N/A!
0N/A! double vis_to_double_dup(unsigned int /*value*/);
0N/A!
0N/A .inline vis_to_double_dup,4
0N/A st %o0,[%sp+2183]
0N/A ld [%sp+2183],%f1
0N/A fmovs %f1,%f0 ! duplicate value
0N/A .end
0N/A!
0N/A! double vis_ll_to_double(unsigned long /*value*/);
0N/A!
0N/A .inline vis_ll_to_double,8
0N/A stx %o0,[%sp+2183]
0N/A ldd [%sp+2183],%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Address space identifier (ASI) register
0N/A!
0N/A! unsigned int vis_read_asi(void);
0N/A!
0N/A .inline vis_read_asi,0
0N/A rd %asi,%o0
0N/A .end
0N/A!
0N/A! void vis_write_asi(unsigned int /* ASI */);
0N/A!
0N/A .inline vis_write_asi,4
0N/A wr %g0,%o0,%asi
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Load/store from/into alternate space
0N/A!
0N/A! float vis_ldfa_ASI_REG(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldfa_ASI_REG,8
0N/A lda [%o0+0]%asi,%f0
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_P(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldfa_ASI_P,8
0N/A lda [%o0]0x80,%f0 ! ASI_P
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_P_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldfa_ASI_P_index,16
0N/A lda [%o0+%o1]0x80,%f0 ! ASI_P
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_PL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldfa_ASI_PL,8
0N/A lda [%o0]0x88,%f0 ! ASI_PL
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_PL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldfa_ASI_PL_index,16
0N/A lda [%o0+%o1]0x88,%f0 ! ASI_PL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_REG(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_REG,8
0N/A ldda [%o0+0]%asi,%f0
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_P(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_P,8
0N/A ldda [%o0]0x80,%f0 ! ASI_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_P_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_P_index,16
0N/A ldda [%o0+%o1]0x80,%f0 ! ASI_P
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_PL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_PL,8
0N/A ldda [%o0]0x88,%f0 ! ASI_PL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_PL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_PL_index,16
0N/A ldda [%o0+%o1]0x88,%f0 ! ASI_PL
0N/A .end
0N/A!
0N/A! void vis_stfa_ASI_REG(float /*frs*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stfa_ASI_REG,12
0N/A sta %f1,[%o1]%asi
0N/A .end
0N/A!
0N/A! void vis_stfa_ASI_P(float /*frs*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stfa_ASI_P,12
0N/A sta %f1,[%o1]0x80 ! ASI_P
0N/A .end
0N/A!
0N/A! void vis_stfa_ASI_P_index(float /*frs*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stfa_ASI_P_index,24
0N/A sta %f1,[%o1+%o2]0x80 ! ASI_P
0N/A .end
0N/A!
0N/A! void vis_stfa_ASI_PL(float /*frs*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stfa_ASI_PL,12
0N/A sta %f1,[%o1]0x88 ! ASI_PL
0N/A .end
0N/A!
0N/A! void vis_stfa_ASI_PL_index(float /*frs*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stfa_ASI_PL_index,24
0N/A sta %f1,[%o1+%o2]0x88 ! ASI_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_REG(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_REG,16
0N/A stda %f0,[%o1]%asi
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_P(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_P,16
0N/A stda %f0,[%o1]0x80 ! ASI_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_P_index(double /*frd*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stdfa_ASI_P_index,24
0N/A stda %f0,[%o1+%o2]0x80 ! ASI_P
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PL(double /*frd*/, void * /*rs1*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PL,16
0N/A stda %f0,[%o1]0x88 ! ASI_PL
0N/A .end
0N/A!
0N/A! void vis_stdfa_ASI_PL_index(double /*frd*/, void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_stdfa_ASI_PL_index,24
0N/A stda %f0,[%o1+%o2]0x88 ! ASI_PL
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_REG(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduha_ASI_REG,8
0N/A lduha [%o0+0]%asi,%o0
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_P(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduha_ASI_P,8
0N/A lduha [%o0]0x80,%o0 ! ASI_P
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_PL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduha_ASI_PL,8
0N/A lduha [%o0]0x88,%o0 ! ASI_PL
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_P_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduha_ASI_P_index,16
0N/A lduha [%o0+%o1]0x80,%o0 ! ASI_P
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_PL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduha_ASI_PL_index,16
0N/A lduha [%o0+%o1]0x88,%o0 ! ASI_PL
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Prefetch
0N/A!
0N/A! void vis_prefetch_read(void * /*address*/);
0N/A!
0N/A .inline vis_prefetch_read,8
0N/A prefetch [%o0],0
0N/A .end
0N/A!
0N/A! void vis_prefetch_write(void * /*address*/);
0N/A!
0N/A .inline vis_prefetch_write,8
0N/A prefetch [%o0],2
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Nonfaulting load instructions
0N/A!
0N/A! char vis_ldsba_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldsba_ASI_PNF,8
0N/A ldsba [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! char vis_ldsba_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldsba_ASI_PNF_index,16
0N/A ldsba [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! char vis_ldsba_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldsba_ASI_PNFL,8
0N/A ldsba [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! char vis_ldsba_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldsba_ASI_PNFL_index,16
0N/A ldsba [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! unsigned char vis_lduba_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduba_ASI_PNF,8
0N/A lduba [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! unsigned char vis_lduba_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduba_ASI_PNF_index,16
0N/A lduba [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! unsigned char vis_lduba_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduba_ASI_PNFL,8
0N/A lduba [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! unsigned char vis_lduba_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduba_ASI_PNFL_index,16
0N/A lduba [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! short vis_ldsha_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldsha_ASI_PNF,8
0N/A ldsha [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! short vis_ldsha_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldsha_ASI_PNF_index,16
0N/A ldsha [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! short vis_ldsha_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldsha_ASI_PNFL,8
0N/A ldsha [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! short vis_ldsha_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldsha_ASI_PNFL_index,16
0N/A ldsha [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduha_ASI_PNF,8
0N/A lduha [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduha_ASI_PNF_index,16
0N/A lduha [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduha_ASI_PNFL,8
0N/A lduha [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! unsigned short vis_lduha_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduha_ASI_PNFL_index,16
0N/A lduha [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! int vis_ldswa_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldswa_ASI_PNF,8
0N/A ldswa [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! int vis_ldswa_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldswa_ASI_PNF_index,16
0N/A ldswa [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! int vis_ldswa_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldswa_ASI_PNFL,8
0N/A ldswa [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! int vis_ldswa_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldswa_ASI_PNFL_index,16
0N/A ldswa [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! unsigned int vis_lduwa_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduwa_ASI_PNF,8
0N/A lduwa [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! unsigned int vis_lduwa_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduwa_ASI_PNF_index,16
0N/A lduwa [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! unsigned int vis_lduwa_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lduwa_ASI_PNFL,8
0N/A lduwa [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! unsigned int vis_lduwa_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lduwa_ASI_PNFL_index,16
0N/A lduwa [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! long vis_ldxa_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldxa_ASI_PNF,8
0N/A ldxa [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! long vis_ldxa_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldxa_ASI_PNF_index,16
0N/A ldxa [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! long vis_ldxa_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldxa_ASI_PNFL,8
0N/A ldxa [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! long vis_ldxa_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldxa_ASI_PNFL_index,16
0N/A ldxa [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! long long vis_ldda_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldda_ASI_PNF,8
0N/A ldda [%o0]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! long long vis_ldda_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldda_ASI_PNF_index,16
0N/A ldda [%o0+%o1]0x82,%o0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! long long vis_ldda_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldda_ASI_PNFL,8
0N/A ldda [%o0]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! long long vis_ldda_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldda_ASI_PNFL_index,16
0N/A ldda [%o0+%o1]0x8a,%o0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldfa_ASI_PNF,8
0N/A lda [%o0]0x82,%f0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldfa_ASI_PNF_index,16
0N/A lda [%o0+%o1]0x82,%f0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_ldfa_ASI_PNFL,8
0N/A lda [%o0]0x8a,%f0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! float vis_ldfa_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_ldfa_ASI_PNFL_index,16
0N/A lda [%o0+%o1]0x8a,%f0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_PNF(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_PNF,8
0N/A ldda [%o0]0x82,%f0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_PNF_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_PNF_index,16
0N/A ldda [%o0+%o1]0x82,%f0 ! ASI_PNF
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_PNFL(void * /*rs1*/);
0N/A!
0N/A .inline vis_lddfa_ASI_PNFL,8
0N/A ldda [%o0]0x8a,%f0 ! ASI_PNFL
0N/A .end
0N/A!
0N/A! double vis_lddfa_ASI_PNFL_index(void * /*rs1*/, long /*index*/);
0N/A!
0N/A .inline vis_lddfa_ASI_PNFL_index,16
0N/A ldda [%o0+%o1]0x8a,%f0 ! ASI_PNFL
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A!
0N/A! The following are the new VIS 2.0 instructions.
0N/A!
0N/A
0N/A!
0N/A! Edge handling instructions which do not set the integer condition codes
0N/A!
0N/A! int vis_edge8n(void * /*rs1*/, void * /*rs2*/);
0N/A!
0N/A .inline vis_edge8n,16
0N/A edge8n %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge8ln(void * /*rs1*/, void * /*rs2*/);
0N/A!
0N/A .inline vis_edge8ln,16
0N/A edge8ln %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge16n(void * /*rs1*/, void * /*rs2*/);
0N/A!
0N/A .inline vis_edge16n,16
0N/A edge16n %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge16ln(void * /*rs1*/, void * /*rs2*/);
0N/A!
0N/A .inline vis_edge16ln,16
0N/A edge16ln %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge32n(void * /*rs1*/, void * /*rs2*/);
0N/A!
0N/A .inline vis_edge32n,16
0N/A edge32n %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! int vis_edge32ln(void * /*rs1*/, void * /*rs2*/);
0N/A!
0N/A .inline vis_edge32ln,16
0N/A edge32ln %o0,%o1,%o0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Byte mask and shuffle instructions
0N/A!
0N/A! void vis_write_bmask(unsigned int /*rs1*/, unsigned int /*rs2*/);
0N/A!
0N/A .inline vis_write_bmask,8
0N/A bmask %o0,%o1,%o0
0N/A .end
0N/A!
0N/A! double vis_bshuffle(double /*frs1*/, double /*frs2*/);
0N/A!
0N/A .inline vis_bshuffle,16
0N/A bshuffle %f0,%f2,%f0
0N/A .end
0N/A
0N/A!--------------------------------------------------------------------
0N/A! Graphics status register
0N/A!
0N/A! unsigned int vis_read_bmask(void);
0N/A!
0N/A .inline vis_read_bmask,0
0N/A rd %gsr,%o0
0N/A srlx %o0,32,%o0
0N/A .end
0N/A!
0N/A! unsigned long vis_read_gsr64(void);
0N/A!
0N/A .inline vis_read_gsr64,0
0N/A rd %gsr,%o0
0N/A .end
0N/A!
0N/A! void vis_write_gsr64(unsigned long /* GSR */);
0N/A!
0N/A .inline vis_write_gsr64,8
0N/A wr %g0,%o0,%gsr
0N/A .end