2 ! ***** BEGIN LICENSE BLOCK *****
3 ! Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 ! The contents of this file are subject to the Mozilla Public License Version
6 ! 1.1 (the "License"); you may not use this file except in compliance with
7 ! the License. You may obtain a copy of the License at
8 ! http://www.mozilla.org/MPL/
10 ! Software distributed under the License is distributed on an "AS IS" basis,
11 ! WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 ! for the specific language governing rights and limitations under the
15 ! The Original Code is vis inline macros (32 bit). (vis_32.il 3.3).
17 ! The Initial Developer of the Original Code is
18 ! Sun Microsystems Inc.
19 ! Portions created by the Initial Developer are Copyright (C) 1995-2000
20 ! the Initial Developer. All Rights Reserved.
24 ! Alternatively, the contents of this file may be used under the terms of
25 ! either the GNU General Public License Version 2 or later (the "GPL"), or
26 ! the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27 ! in which case the provisions of the GPL or the LGPL are applicable instead
28 ! of those above. If you wish to allow use of your version of this file only
29 ! under the terms of either the GPL or the LGPL, and not to allow others to
30 ! use your version of this file under the terms of the MPL, indicate your
31 ! decision by deleting the provisions above and replace them with the notice
32 ! and other provisions required by the GPL or the LGPL. If you do not delete
33 ! the provisions above, a recipient may use your version of this file under
34 ! the terms of any one of the MPL, the GPL or the LGPL.
36 ! ***** END LICENSE BLOCK *****
37 ! $Id: vis_32.il,v 1.3 2004/04/27 23:04:36 gerv%gerv.net Exp $
39 ! The interface to the VIS instructions as declared below (and in the VIS
40 ! User's Manual) will not change, but the macro implementation might change
43 !--------------------------------------------------------------------
44 ! Pure edge handling instructions
46 ! int vis_edge8(void */*frs1*/, void */*frs2*/);
52 ! int vis_edge8l(void */*frs1*/, void */*frs2*/);
58 ! int vis_edge16(void */*frs1*/, void */*frs2*/);
64 ! int vis_edge16l(void */*frs1*/, void */*frs2*/);
70 ! int vis_edge32(void */*frs1*/, void */*frs2*/);
76 ! int vis_edge32l(void */*frs1*/, void */*frs2*/);
82 !--------------------------------------------------------------------
83 ! Edge handling instructions with negative return values if cc set
85 ! int vis_edge8cc(void */*frs1*/, void */*frs2*/);
94 ! int vis_edge8lcc(void */*frs1*/, void */*frs2*/);
96 .inline vis_edge8lcc,8
103 ! int vis_edge16cc(void */*frs1*/, void */*frs2*/);
105 .inline vis_edge16cc,8
112 ! int vis_edge16lcc(void */*frs1*/, void */*frs2*/);
114 .inline vis_edge16lcc,8
121 ! int vis_edge32cc(void */*frs1*/, void */*frs2*/);
123 .inline vis_edge32cc,8
130 ! int vis_edge32lcc(void */*frs1*/, void */*frs2*/);
132 .inline vis_edge32lcc,8
139 !--------------------------------------------------------------------
140 ! Alignment instructions
142 ! void *vis_alignaddr(void */*rs1*/, int /*rs2*/);
144 .inline vis_alignaddr,8
145 alignaddr %o0,%o1,%o0
148 ! void *vis_alignaddrl(void */*rs1*/, int /*rs2*/);
150 .inline vis_alignaddrl,8
151 alignaddrl %o0,%o1,%o0
154 ! double vis_faligndata(double /*frs1*/, double /*frs2*/);
156 .inline vis_faligndata,16
161 faligndata %f4,%f10,%f0
164 !--------------------------------------------------------------------
165 ! Partitioned comparison instructions
167 ! int vis_fcmple16(double /*frs1*/, double /*frs2*/);
169 .inline vis_fcmple16,16
174 fcmple16 %f4,%f10,%o0
177 ! int vis_fcmpne16(double /*frs1*/, double /*frs2*/);
179 .inline vis_fcmpne16,16
184 fcmpne16 %f4,%f10,%o0
187 ! int vis_fcmple32(double /*frs1*/, double /*frs2*/);
189 .inline vis_fcmple32,16
194 fcmple32 %f4,%f10,%o0
197 ! int vis_fcmpne32(double /*frs1*/, double /*frs2*/);
199 .inline vis_fcmpne32,16
204 fcmpne32 %f4,%f10,%o0
207 ! int vis_fcmpgt16(double /*frs1*/, double /*frs2*/);
209 .inline vis_fcmpgt16,16
214 fcmpgt16 %f4,%f10,%o0
217 ! int vis_fcmpeq16(double /*frs1*/, double /*frs2*/);
219 .inline vis_fcmpeq16,16
224 fcmpeq16 %f4,%f10,%o0
227 ! int vis_fcmpgt32(double /*frs1*/, double /*frs2*/);
229 .inline vis_fcmpgt32,16
234 fcmpgt32 %f4,%f10,%o0
237 ! int vis_fcmpeq32(double /*frs1*/, double /*frs2*/);
239 .inline vis_fcmpeq32,16
244 fcmpeq32 %f4,%f10,%o0
247 !--------------------------------------------------------------------
248 ! Partitioned arithmetic
250 ! double vis_fmul8x16(float /*frs1*/, double /*frs2*/);
252 .inline vis_fmul8x16,12
258 fmul8x16 %f4,%f10,%f0
261 ! double vis_fmul8x16_dummy(float /*frs1*/, int /*dummy*/, double /*frs2*/);
263 .inline vis_fmul8x16_dummy,16
268 fmul8x16 %f4,%f10,%f0
271 ! double vis_fmul8x16au(float /*frs1*/, float /*frs2*/);
273 .inline vis_fmul8x16au,8
278 fmul8x16au %f4,%f10,%f0
281 ! double vis_fmul8x16al(float /*frs1*/, float /*frs2*/);
283 .inline vis_fmul8x16al,8
288 fmul8x16al %f4,%f10,%f0
291 ! double vis_fmul8sux16(double /*frs1*/, double /*frs2*/);
293 .inline vis_fmul8sux16,16
298 fmul8sux16 %f4,%f10,%f0
301 ! double vis_fmul8ulx16(double /*frs1*/, double /*frs2*/);
303 .inline vis_fmul8ulx16,16
308 fmul8ulx16 %f4,%f10,%f0
311 ! double vis_fmuld8sux16(float /*frs1*/, float /*frs2*/);
313 .inline vis_fmuld8sux16,8
318 fmuld8sux16 %f4,%f10,%f0
321 ! double vis_fmuld8ulx16(float /*frs1*/, float /*frs2*/);
323 .inline vis_fmuld8ulx16,8
328 fmuld8ulx16 %f4,%f10,%f0
331 ! double vis_fpadd16(double /*frs1*/, double /*frs2*/);
333 .inline vis_fpadd16,16
341 ! float vis_fpadd16s(float /*frs1*/, float /*frs2*/);
343 .inline vis_fpadd16s,8
348 fpadd16s %f4,%f10,%f0
351 ! double vis_fpadd32(double /*frs1*/, double /*frs2*/);
353 .inline vis_fpadd32,16
361 ! float vis_fpadd32s(float /*frs1*/, float /*frs2*/);
363 .inline vis_fpadd32s,8
368 fpadd32s %f4,%f10,%f0
371 ! double vis_fpsub16(double /*frs1*/, double /*frs2*/);
373 .inline vis_fpsub16,16
381 ! float vis_fpsub16s(float /*frs1*/, float /*frs2*/);
383 .inline vis_fpsub16s,8
388 fpsub16s %f4,%f10,%f0
391 ! double vis_fpsub32(double /*frs1*/, double /*frs2*/);
393 .inline vis_fpsub32,16
401 ! float vis_fpsub32s(float /*frs1*/, float /*frs2*/);
403 .inline vis_fpsub32s,8
408 fpsub32s %f4,%f10,%f0
411 !--------------------------------------------------------------------
414 ! float vis_fpack16(double /*frs2*/);
416 .inline vis_fpack16,8
423 ! double vis_fpack16_pair(double /*frs2*/, double /*frs2*/);
425 .inline vis_fpack16_pair,16
434 ! void vis_st2_fpack16(double, double, double *)
436 .inline vis_st2_fpack16,20
447 ! void vis_std_fpack16(double, double, double *)
449 .inline vis_std_fpack16,20
459 ! void vis_st2_fpackfix(double, double, double *)
461 .inline vis_st2_fpackfix,20
472 ! double vis_fpack16_to_hi(double /*frs1*/, double /*frs2*/);
474 .inline vis_fpack16_to_hi,16
482 ! double vis_fpack16_to_lo(double /*frs1*/, double /*frs2*/);
484 .inline vis_fpack16_to_lo,16
490 fmovs %f3,%f1 /* without this, optimizer goes wrong */
494 ! double vis_fpack32(double /*frs1*/, double /*frs2*/);
496 .inline vis_fpack32,16
504 ! float vis_fpackfix(double /*frs2*/);
506 .inline vis_fpackfix,8
512 ! double vis_fpackfix_pair(double /*frs2*/, double /*frs2*/);
514 .inline vis_fpackfix_pair,16
523 !--------------------------------------------------------------------
526 ! double vis_pdist(double /*frs1*/, double /*frs2*/, double /*frd*/);
538 !--------------------------------------------------------------------
541 ! double vis_fpmerge(float /*frs1*/, float /*frs2*/);
543 .inline vis_fpmerge,8
551 !--------------------------------------------------------------------
554 ! double vis_fexpand(float /*frs2*/);
556 .inline vis_fexpand,4
562 ! double vis_fexpand_hi(double /*frs2*/);
564 .inline vis_fexpand_hi,8
570 ! double vis_fexpand_lo(double /*frs2*/);
572 .inline vis_fexpand_lo,8
579 !--------------------------------------------------------------------
580 ! Bitwise logical operations
582 ! double vis_fnor(double /*frs1*/, double /*frs2*/);
592 ! float vis_fnors(float /*frs1*/, float /*frs2*/);
602 ! double vis_fandnot(double /*frs1*/, double /*frs2*/);
604 .inline vis_fandnot,16
609 fandnot1 %f4,%f10,%f0
612 ! float vis_fandnots(float /*frs1*/, float /*frs2*/);
614 .inline vis_fandnots,8
619 fandnot1s %f4,%f10,%f0
622 ! double vis_fnot(double /*frs1*/);
630 ! float vis_fnots(float /*frs1*/);
638 ! double vis_fxor(double /*frs1*/, double /*frs2*/);
648 ! float vis_fxors(float /*frs1*/, float /*frs2*/);
658 ! double vis_fnand(double /*frs1*/, double /*frs2*/);
668 ! float vis_fnands(float /*frs1*/, float /*frs2*/);
678 ! double vis_fand(double /*frs1*/, double /*frs2*/);
688 ! float vis_fands(float /*frs1*/, float /*frs2*/);
698 ! double vis_fxnor(double /*frs1*/, double /*frs2*/);
708 ! float vis_fxnors(float /*frs1*/, float /*frs2*/);
718 ! double vis_fsrc(double /*frs1*/);
726 ! float vis_fsrcs(float /*frs1*/);
734 ! double vis_fornot(double /*frs1*/, double /*frs2*/);
736 .inline vis_fornot,16
744 ! float vis_fornots(float /*frs1*/, float /*frs2*/);
746 .inline vis_fornots,8
751 fornot1s %f4,%f10,%f0
754 ! double vis_for(double /*frs1*/, double /*frs2*/);
764 ! float vis_fors(float /*frs1*/, float /*frs2*/);
774 ! double vis_fzero(/* void */)
780 ! float vis_fzeros(/* void */)
786 ! double vis_fone(/* void */)
792 ! float vis_fones(/* void */)
798 !--------------------------------------------------------------------
799 ! Partial store instructions
801 ! vis_stdfa_ASI_PST8P(double frd, void *rs1, int rmask)
803 .inline vis_stdfa_ASI_PST8P,16
806 stda %f4,[%o2]%o3,0xc0 ! ASI_PST8_P
809 ! vis_stdfa_ASI_PST8PL(double frd, void *rs1, int rmask)
811 .inline vis_stdfa_ASI_PST8PL,16
814 stda %f4,[%o2]%o3,0xc8 ! ASI_PST8_PL
817 ! vis_stdfa_ASI_PST8P_int_pair(void *rs1, void *rs2, void *rs3, int rmask);
819 .inline vis_stdfa_ASI_PST8P_int_pair,16
822 stda %f4,[%o2]%o3,0xc0 ! ASI_PST8_P
825 ! vis_stdfa_ASI_PST8S(double frd, void *rs1, int rmask)
827 .inline vis_stdfa_ASI_PST8S,16
830 stda %f4,[%o2]%o3,0xc1 ! ASI_PST8_S
833 ! vis_stdfa_ASI_PST16P(double frd, void *rs1, int rmask)
835 .inline vis_stdfa_ASI_PST16P,16
838 stda %f4,[%o2]%o3,0xc2 ! ASI_PST16_P
841 ! vis_stdfa_ASI_PST16S(double frd, void *rs1, int rmask)
843 .inline vis_stdfa_ASI_PST16S,16
846 stda %f4,[%o2]%o3,0xc3 ! ASI_PST16_S
849 ! vis_stdfa_ASI_PST32P(double frd, void *rs1, int rmask)
851 .inline vis_stdfa_ASI_PST32P,16
854 stda %f4,[%o2]%o3,0xc4 ! ASI_PST32_P
857 ! vis_stdfa_ASI_PST32S(double frd, void *rs1, int rmask)
859 .inline vis_stdfa_ASI_PST32S,16
862 stda %f4,[%o2]%o3,0xc5 ! ASI_PST32_S
865 !--------------------------------------------------------------------
866 ! Short store instructions
868 ! vis_stdfa_ASI_FL8P(double frd, void *rs1)
870 .inline vis_stdfa_ASI_FL8P,12
873 stda %f4,[%o2]0xd0 ! ASI_FL8_P
876 ! vis_stdfa_ASI_FL8P_index(double frd, void *rs1, long index)
878 .inline vis_stdfa_ASI_FL8P_index,16
881 stda %f4,[%o2+%o3]0xd0 ! ASI_FL8_P
884 ! vis_stdfa_ASI_FL8S(double frd, void *rs1)
886 .inline vis_stdfa_ASI_FL8S,12
889 stda %f4,[%o2]0xd1 ! ASI_FL8_S
892 ! vis_stdfa_ASI_FL16P(double frd, void *rs1)
894 .inline vis_stdfa_ASI_FL16P,12
897 stda %f4,[%o2]0xd2 ! ASI_FL16_P
900 ! vis_stdfa_ASI_FL16P_index(double frd, void *rs1, long index)
902 .inline vis_stdfa_ASI_FL16P_index,16
905 stda %f4,[%o2+%o3]0xd2 ! ASI_FL16_P
908 ! vis_stdfa_ASI_FL16S(double frd, void *rs1)
910 .inline vis_stdfa_ASI_FL16S,12
913 stda %f4,[%o2]0xd3 ! ASI_FL16_S
916 ! vis_stdfa_ASI_FL8PL(double frd, void *rs1)
918 .inline vis_stdfa_ASI_FL8PL,12
921 stda %f4,[%o2]0xd8 ! ASI_FL8_PL
924 ! vis_stdfa_ASI_FL8SL(double frd, void *rs1)
926 .inline vis_stdfa_ASI_FL8SL,12
929 stda %f4,[%o2]0xd9 ! ASI_FL8_SL
932 ! vis_stdfa_ASI_FL16PL(double frd, void *rs1)
934 .inline vis_stdfa_ASI_FL16PL,12
937 stda %f4,[%o2]0xda ! ASI_FL16_PL
940 ! vis_stdfa_ASI_FL16SL(double frd, void *rs1)
942 .inline vis_stdfa_ASI_FL16SL,12
945 stda %f4,[%o2]0xdb ! ASI_FL16_SL
948 !--------------------------------------------------------------------
949 ! Short load instructions
951 ! double vis_lddfa_ASI_FL8P(void *rs1)
953 .inline vis_lddfa_ASI_FL8P,4
954 ldda [%o0]0xd0,%f4 ! ASI_FL8_P
955 fmovd %f4,%f0 ! Compiler can clean this up
958 ! double vis_lddfa_ASI_FL8P_index(void *rs1, long index)
960 .inline vis_lddfa_ASI_FL8P_index,8
961 ldda [%o0+%o1]0xd0,%f4
965 ! double vis_lddfa_ASI_FL8P_hi(void *rs1, unsigned int index)
967 .inline vis_lddfa_ASI_FL8P_hi,8
969 ldda [%o0+%o1]0xd0,%f4
973 ! double vis_lddfa_ASI_FL8P_lo(void *rs1, unsigned int index)
975 .inline vis_lddfa_ASI_FL8P_lo,8
978 ldda [%o0+%o1]0xd0,%f4
982 ! double vis_lddfa_ASI_FL8S(void *rs1)
984 .inline vis_lddfa_ASI_FL8S,4
985 ldda [%o0]0xd1,%f4 ! ASI_FL8_S
989 ! double vis_lddfa_ASI_FL16P(void *rs1)
991 .inline vis_lddfa_ASI_FL16P,4
992 ldda [%o0]0xd2,%f4 ! ASI_FL16_P
996 ! double vis_lddfa_ASI_FL16P_index(void *rs1, long index)
998 .inline vis_lddfa_ASI_FL16P_index,8
999 ldda [%o0+%o1]0xd2,%f4 ! ASI_FL16_P
1003 ! double vis_lddfa_ASI_FL16S(void *rs1)
1005 .inline vis_lddfa_ASI_FL16S,4
1006 ldda [%o0]0xd3,%f4 ! ASI_FL16_S
1010 ! double vis_lddfa_ASI_FL8PL(void *rs1)
1012 .inline vis_lddfa_ASI_FL8PL,4
1013 ldda [%o0]0xd8,%f4 ! ASI_FL8_PL
1017 ! double vis_lddfa_ASI_FL8PL_index(void *rs1, long index)
1019 .inline vis_lddfa_ASI_FL8PL_index,8
1020 ldda [%o0+%o1]0xd8,%f4 ! ASI_FL8_PL
1024 ! double vis_lddfa_ASI_FL8SL(void *rs1)
1026 .inline vis_lddfa_ASI_FL8SL,4
1027 ldda [%o0]0xd9,%f4 ! ASI_FL8_SL
1031 ! double vis_lddfa_ASI_FL16PL(void *rs1)
1033 .inline vis_lddfa_ASI_FL16PL,4
1034 ldda [%o0]0xda,%f4 ! ASI_FL16_PL
1038 ! double vis_lddfa_ASI_FL16PL_index(void *rs1, long index)
1040 .inline vis_lddfa_ASI_FL16PL_index,8
1041 ldda [%o0+%o1]0xda,%f4 ! ASI_FL16_PL
1045 ! double vis_lddfa_ASI_FL16SL(void *rs1)
1047 .inline vis_lddfa_ASI_FL16SL,4
1048 ldda [%o0]0xdb,%f4 ! ASI_FL16_SL
1052 !--------------------------------------------------------------------
1053 ! Graphics status register
1055 ! unsigned int vis_read_gsr(void)
1057 .inline vis_read_gsr,0
1061 ! void vis_write_gsr(unsigned int /* GSR */)
1063 .inline vis_write_gsr,4
1067 !--------------------------------------------------------------------
1068 ! Voxel texture mapping
1070 ! unsigned long vis_array8(unsigned long long /*rs1 */, int /*rs2*/)
1072 .inline vis_array8,12
1074 srl %o1,0,%o1 ! clear the most significant 32 bits of %o1
1075 or %o0,%o1,%o3 ! join %o0 and %o1 into %o3
1079 ! unsigned long vis_array16(unsigned long long /*rs1*/, int /*rs2*/)
1081 .inline vis_array16,12
1083 srl %o1,0,%o1 ! clear the most significant 32 bits of %o1
1084 or %o0,%o1,%o3 ! join %o0 and %o1 into %o3
1088 ! unsigned long vis_array32(unsigned long long /*rs1*/, int /*rs2*/)
1090 .inline vis_array32,12
1092 srl %o1,0,%o1 ! clear the most significant 32 bits of %o1
1093 or %o0,%o1,%o3 ! join %o0 and %o1 into %o3
1097 !--------------------------------------------------------------------
1098 ! Register aliasing and type casts
1100 ! float vis_read_hi(double /* frs1 */);
1102 .inline vis_read_hi,8
1103 std %o0,[%sp+0x48] ! store double frs1
1104 ldd [%sp+0x48],%f0 ! %f0:%f1 = double frs1; return %f0;
1107 ! float vis_read_lo(double /* frs1 */);
1109 .inline vis_read_lo,8
1110 std %o0,[%sp+0x48] ! store double frs1
1111 ldd [%sp+0x48],%f0 ! %f0:%f1 = double frs1;
1112 fmovs %f1,%f0 ! %f0 = low word (frs1); return %f0;
1115 ! double vis_write_hi(double /* frs1 */, float /* frs2 */);
1117 .inline vis_write_hi,12
1118 std %o0,[%sp+0x48] ! store double frs1;
1119 ldd [%sp+0x48],%f0 ! %f0:%f1 = double frs1;
1120 st %o2,[%sp+0x44] ! store float frs2;
1121 ld [%sp+0x44],%f2 ! %f2 = float frs2;
1122 fmovs %f2,%f0 ! %f0 = float frs2; return %f0:f1;
1125 ! double vis_write_lo(double /* frs1 */, float /* frs2 */);
1127 .inline vis_write_lo,12
1128 std %o0,[%sp+0x48] ! store double frs1;
1129 ldd [%sp+0x48],%f0 ! %f0:%f1 = double frs1;
1130 st %o2,[%sp+0x44] ! store float frs2;
1131 ld [%sp+0x44],%f2 ! %f2 = float frs2;
1132 fmovs %f2,%f1 ! %f1 = float frs2; return %f0:f1;
1135 ! double vis_freg_pair(float /* frs1 */, float /* frs2 */);
1137 .inline vis_freg_pair,8
1138 st %o0,[%sp+0x48] ! store float frs1
1140 st %o1,[%sp+0x48] ! store float frs2
1144 ! float vis_to_float(unsigned int /*value*/);
1146 .inline vis_to_float,4
1151 ! double vis_to_double(unsigned int /*value1*/, unsigned int /*value2*/);
1153 .inline vis_to_double,8
1158 ! double vis_to_double_dup(unsigned int /*value*/);
1160 .inline vis_to_double_dup,4
1163 fmovs %f1,%f0 ! duplicate value
1166 ! double vis_ll_to_double(unsigned long long /*value*/);
1168 .inline vis_ll_to_double,8
1173 !--------------------------------------------------------------------
1174 ! Address space identifier (ASI) register
1176 ! unsigned int vis_read_asi(void)
1178 .inline vis_read_asi,0
1182 ! void vis_write_asi(unsigned int /* ASI */)
1184 .inline vis_write_asi,4
1188 !--------------------------------------------------------------------
1189 ! Load/store from/into alternate space
1191 ! float vis_ldfa_ASI_REG(void *rs1)
1193 .inline vis_ldfa_ASI_REG,4
1195 fmovs %f4,%f0 ! Compiler can clean this up
1198 ! float vis_ldfa_ASI_P(void *rs1)
1200 .inline vis_ldfa_ASI_P,4
1201 lda [%o0]0x80,%f4 ! ASI_P
1202 fmovs %f4,%f0 ! Compiler can clean this up
1205 ! float vis_ldfa_ASI_PL(void *rs1)
1207 .inline vis_ldfa_ASI_PL,4
1208 lda [%o0]0x88,%f4 ! ASI_PL
1209 fmovs %f4,%f0 ! Compiler can clean this up
1212 ! double vis_lddfa_ASI_REG(void *rs1)
1214 .inline vis_lddfa_ASI_REG,4
1215 ldda [%o0+0]%asi,%f4
1216 fmovd %f4,%f0 ! Compiler can clean this up
1219 ! double vis_lddfa_ASI_P(void *rs1)
1221 .inline vis_lddfa_ASI_P,4
1222 ldda [%o0]0x80,%f4 ! ASI_P
1223 fmovd %f4,%f0 ! Compiler can clean this up
1226 ! double vis_lddfa_ASI_PL(void *rs1)
1228 .inline vis_lddfa_ASI_PL,4
1229 ldda [%o0]0x88,%f4 ! ASI_PL
1230 fmovd %f4,%f0 ! Compiler can clean this up
1233 ! vis_stfa_ASI_REG(float frs, void *rs1)
1235 .inline vis_stfa_ASI_REG,8
1241 ! vis_stfa_ASI_P(float frs, void *rs1)
1243 .inline vis_stfa_ASI_P,8
1246 sta %f4,[%o1]0x80 ! ASI_P
1249 ! vis_stfa_ASI_PL(float frs, void *rs1)
1251 .inline vis_stfa_ASI_PL,8
1254 sta %f4,[%o1]0x88 ! ASI_PL
1257 ! vis_stdfa_ASI_REG(double frd, void *rs1)
1259 .inline vis_stdfa_ASI_REG,12
1262 stda %f4,[%o2+0]%asi
1265 ! vis_stdfa_ASI_P(double frd, void *rs1)
1267 .inline vis_stdfa_ASI_P,12
1270 stda %f4,[%o2]0x80 ! ASI_P
1273 ! vis_stdfa_ASI_PL(double frd, void *rs1)
1275 .inline vis_stdfa_ASI_PL,12
1278 stda %f4,[%o2]0x88 ! ASI_PL
1281 ! unsigned short vis_lduha_ASI_REG(void *rs1)
1283 .inline vis_lduha_ASI_REG,4
1284 lduha [%o0+0]%asi,%o0
1287 ! unsigned short vis_lduha_ASI_P(void *rs1)
1289 .inline vis_lduha_ASI_P,4
1290 lduha [%o0]0x80,%o0 ! ASI_P
1293 ! unsigned short vis_lduha_ASI_PL(void *rs1)
1295 .inline vis_lduha_ASI_PL,4
1296 lduha [%o0]0x88,%o0 ! ASI_PL
1299 ! unsigned short vis_lduha_ASI_P_index(void *rs1, long index)
1301 .inline vis_lduha_ASI_P_index,8
1302 lduha [%o0+%o1]0x80,%o0 ! ASI_P
1305 ! unsigned short vis_lduha_ASI_PL_index(void *rs1, long index)
1307 .inline vis_lduha_ASI_PL_index,8
1308 lduha [%o0+%o1]0x88,%o0 ! ASI_PL
1311 !--------------------------------------------------------------------
1314 ! void vis_prefetch_read(void * /*address*/);
1316 .inline vis_prefetch_read,4
1320 ! void vis_prefetch_write(void * /*address*/);
1322 .inline vis_prefetch_write,4