游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2662|回复: 7

求教,vs1.1中的frc指令的用法

[复制链接]

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2004-5-13 09:42:00 | 显示全部楼层 |阅读模式
在vs1.1中

比如
...
frc r6,r6    //r6中已存放4个小数分量
...
出错,删除frc r6,r6可以编译通过
用frc r6.xy,r6或frc r6.y,r6可以编译通过,是否r6的四个分量不能一起得到小数尾数,一次只能得到二个?
该指令是宏指令,占三个指令位,如果想得到四个分量的尾数,要占6个指令位,我这样说对不对?
我想该指令是用expp来写的,不知对不对?

用过的请讲一下该指令的具体限制,我看了dx9的帮助文档,但还是不太清楚,是不是说在vs1.1中只能用.xy来指定输出?

[em4] [em4] [em4] [em4] [em4]

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-5-13 10:20:00 | 显示全部楼层

Re:求教,vs1.1中的frc指令的用法

For version 1_1, the allowable write masks are .y and .xy (.x is not allowed).

所谓write mask,就是指定写到vector4的某个或多个分量
在vs_1_1里,只允许使用r.y和r.xy,也就是说在vs_1_1里,这个指令是标量的

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2004-5-13 11:39:00 | 显示全部楼层

Re:求教,vs1.1中的frc指令的用法

是啊就是不清楚,只说了可以使用的mask是.xy和.y,但没说不用mask时的情况,不知道是不是我的理解有错误,如果错误,那么在这个错误理解的基础上奋斗了一晚上想知道用frc一次就可以得到4个尾数的正确用法,结果........

既然是宏指令,肯定是用已有的其它指令来做的,根据expp的运算规则,frc只有可能是用expp写的了

这么简单的运算竟然无法一次完成

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-5-13 12:47:00 | 显示全部楼层

Re:求教,vs1.1中的frc指令的用法

呵呵,说得很清楚了 ,这是vs_1_1的限制,如果要写回到4个分量,就需要多一个slot
至于frc和你说得exp,expp到底是不是真正意义上的macro-ops,我觉得是sdk文档的
错误,其他文档都没有提到这三个指令是macro-ops

你的算法很别致呢,怎么会需要用到4分量同时frc呢?

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-5-13 13:48:00 | 显示全部楼层

Re:求教,vs1.1中的frc指令的用法

vs1.1  中同时写4个分量可不是多出1个slot吧,首先frc本身就是3slot,所以加上一条mov应该多出4个slot才对。
另外,vs1.1的frc不是标量运算吧。

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-5-13 15:39:00 | 显示全部楼层

Re:求教,vs1.1中的frc指令的用法

如果是向量计算,就不会有所谓write mask的限制
这里指出的是,在vs中其实没有所谓的标量流水线和向量流水线,我只是
借用ps里这个这个说法来形容frc这种不完全流水的指令

在vs_2_0中,frc已经只占用一个slot

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-5-13 16:03:00 | 显示全部楼层

Re: Re:求教,vs1.1中的frc指令的用法

secondage: Re:求教,vs1.1中的frc指令的用法

如果是向量计算,就不会有所谓write mask的限制

如果是标量计算,也没可能使用.xy这样的mask且支持source register Swizzling(SIMD like的都应该算向量计算),所以至少frc不是单纯的标量计算。

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
 楼主| 发表于 2004-5-13 17:20:00 | 显示全部楼层

Re:求教,vs1.1中的frc指令的用法

是一个n*n网络的顶点混合计算,上下左右要混合8次
完了,vs1.1是不能完成这个不可能的任务的,128指令的限制太强了

已经写不下去了,光给四个分量取尾数就用了6个slot,重复8次,就是48个slot,再加上8次重复的运算,已经大大超出预算,功力不够,算了,还是老老实实用c写吧,只是没办法realtime了

至于vs1.1中的frc是不是宏,我想应该是吧,其实这个问题并不重要

什么时候天下人都拥有一块vs3.x、ps3.x的显卡!

另外,看到某篇新闻类的文章说可以拼接vs代码片段,达到突破128限制的说法不知是不是真的?如果可以,谁研究过?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 22:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表