iOS录音问题

问题描述
AD的iPad版有一个鼓掌互动的应用。换了前后三套类库,如下:
SCListener:https://gist.github.com/72914
AVAudioRecorder:http://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioRecorder_ClassReference/Reference/Reference.html
SpeakHere:http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html

问题分析
首先使用SCListener,发现模拟器上正常使用,但是真机不能监听声音。再使用AVAudioRecorder,发现还是有以上真机不能监听的问题。
最后使用SpeakHere,可以监听,但是有一个bug。就是:真机上,声音监听过就不能播放video,而模拟器上一切正常。

问题解决
原来录音和播放使用的是一个通道,需要手动设置当前通道的状态。而模拟器上就可以忽略这种限制。
修改通道为录音的代码如下:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryRecord error:nil];

修改通道为播放的代码如下:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];

播放前修改为播放,录音前修改为录音,一切OK了。

PS:后来发现只要修改对应的通道,AVAudioRecorder在真机上也可以用了。

cocos2d多个CCSprite同时运行带CCCallFuncN的Action后会造成调用丢失

问题描述
昨天晚上通宵改Geely iPad的bug,这个bug改了8个小时。问题是程序会泄露导致崩溃。

问题分析
项目使用的是cocos2d,所以也不能使用Instruments做性能测试。一步一步发现一个CCLayer没有dealloc,于是进去一步一步查,一段段的注释和启用。最后发现有了这段代码就会出现泄露崩溃:

[vBackground stopAllActions];

[vMenu stopAllActions];

id backgroundFaceAction=[CCFadeOut actionWithDuration:0.7];

id backgroundCallAction=[CCCallFuncN actionWithTarget:self selector:@selector(removeNode:)];

id backgroundSequenceAction=[CCSequence actions:backgroundFaceAction, backgroundCallAction, nil];

id menuFaceAction=[CCFadeOut actionWithDuration:0.7];

id menuCallAction=[CCCallFuncN actionWithTarget:self selector:@selector(removeNode:)];

id menuSequenceAction=[CCSequence actions:menuFaceAction, menuCallAction, nil];

[vBackground runAction:backgroundSequenceAction];

[vMenu runAction:menuSequenceAction];

其中调用的removeNode函数如下:

-(void) removeNode:(id)vNode

{

CCNode *node=vNode;

if (node.parent!=nil)

{

[self removeChild:node cleanup:YES];

}

}

改成直接removeChild掉两个CCSprite,就不崩溃了:

[self removeNode:vBackground];

[self removeNode:vMenu];

问题解决:猜想是两个CCSprite同一时间开始的两个CCAction后同时调用removeNode函数,但是一个调到了,一个调用不到。想来这个是一个cocos2d的bug。

Apple出怪版了

问题描述:昨天换的2011新15寸MBP,通过Time Machine把资料倒入新电本。今天编译Geely iPad不通过,问题多多,首先是证书问题,通过重新做了一个证书解决了。后来又碰到个非常奇怪的问题,出怪版了。

问题分析:编译通过,运行程序,出现如下错误:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)

Copyright 2004 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB.  Type "show warranty" for details.

This GDB was configured as "x86_64-apple-darwin".Attaching to process 2375.

2011-04-09 16:54:41.148 Geely[2375:207] cocos2d: cocos2d v1.0.0-beta

2011-04-09 16:54:41.149 Geely[2375:207] cocos2d: Using Director Type:CCDirectorDisplayLink

2011-04-09 16:54:41.164 Geely[2375:207] cocos2d: OS version: 4.3 (0x04030000)

2011-04-09 16:54:41.164 Geely[2375:207] cocos2d: GL_VENDOR:   Apple Computer, Inc.

2011-04-09 16:54:41.164 Geely[2375:207] cocos2d: GL_RENDERER: Apple Software Renderer

2011-04-09 16:54:41.165 Geely[2375:207] cocos2d: GL_VERSION:  OpenGL ES-CM 1.1 APPLE

2011-04-09 16:54:41.165 Geely[2375:207] cocos2d: GL_MAX_TEXTURE_SIZE: 2048

2011-04-09 16:54:41.166 Geely[2375:207] cocos2d: GL_MAX_MODELVIEW_STACK_DEPTH: 16

2011-04-09 16:54:41.166 Geely[2375:207] cocos2d: GL_MAX_SAMPLES: 4

2011-04-09 16:54:41.167 Geely[2375:207] cocos2d: GL supports PVRTC: YES

2011-04-09 16:54:41.167 Geely[2375:207] cocos2d: GL supports BGRA8888 textures: YES

2011-04-09 16:54:41.167 Geely[2375:207] cocos2d: GL supports NPOT textures: YES

2011-04-09 16:54:41.168 Geely[2375:207] cocos2d: GL supports discard_framebuffer: YES

2011-04-09 16:54:41.168 Geely[2375:207] cocos2d: compiled with NPOT support: NO

2011-04-09 16:54:41.168 Geely[2375:207] cocos2d: compiled with VBO support in TextureAtlas : YES

2011-04-09 16:54:41.203 Geely[2375:207] cocos2d: compiled with Affine Matrix transformation in CCNode : YES

2011-04-09 16:54:41.204 Geely[2375:207] cocos2d: compiled with Profiling Support: NO

2011-04-09 16:54:41.213 Geely[2375:207] cocos2d: surface size: 1024x768

[Switching to process 2375 thread 0x580b]

[Switching to process 2375 thread 0x207]

LLVM ERROR: Cannot yet select: 0x5838e90: v2i64 = bit_convert 0x58693d8 [ID=115]

0x58693d8: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x58691b8, 0x5837930 [ORD=123] [ID=112]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x58691b8: v4i32 = bit_convert 0x586c310 [ORD=119] [ID=109]

0x586c310: v4f32 = X86ISD::MOVHLPS 0x586c0f0, 0x586c200 [ID=105]

0x586c0f0: v4f32 = X86ISD::UNPCKHPS 0x5868718, 0x5868938 [ID=101]

0x5868718: v4f32 = bit_convert 0x5868690 [ORD=91] [ID=96]

0x5868690: v4i32 = llvm.x86.sse2.cvttps2dq 0x58681b8, 0x5868608 [ORD=90] [ID=92]

0x58681b8: i32 = Constant<629> [ORD=80] [ID=13]

0x5868608: v4f32 = fmul 0x5867c68, 0x5868e00 [ORD=89] [ID=88]

0x5867c68: v4f32 = fmul 0x5867be0, 0x5868350 [ORD=69] [ID=84]

0x5867be0: v4f32 = llvm.x86.sse2.cvtdq2ps 0x5839d70, 0x5867b58 [ORD=68] [ID=80]

0x5839d70: i32 = Constant<617> [ORD=56] [ID=12]

0x5867b58: v4i32 = bit_convert 0x586bf58 [ORD=67] [ID=76]

0x586bf58: v4f32 = X86ISD::MOVLHPS 0x586bdc0, 0x586bcb0 [ID=72]

0x586bdc0: v4f32 = X86ISD::UNPCKHPS 0x58372d0, 0x5839358 [ID=69]

0x58372d0: v4f32 = bit_convert 0x5837578 [ORD=30] [ID=60]

0x5837578: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837028, 0x5837820 [ORD=27] [ID=56]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837820: i32 = Constant<12> [ORD=27] [ID=10]

0x5839358: v4f32 = bit_convert 0x58371c0 [ORD=32] [ID=65]

0x58371c0: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837bd8, 0x5837138 [ORD=28] [ID=62]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837bd8: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5838fa0 [ORD=23] [ID=58]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5838fa0: i32 = Constant<20> [ORD=23] [ID=7]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x586bcb0: v4f32 = X86ISD::UNPCKHPS 0x5839468, 0x5839578 [ID=67]

0x5839468: v4f32 = bit_convert 0x5837248 [ORD=34] [ID=64]

0x5837248: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837688, 0x5837138 [ORD=29] [ID=61]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837688: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5837930 [ORD=24] [ID=57]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837930: i32 = Constant<24> [ORD=24] [ID=8]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x5839578: v4f32 = bit_convert 0x5837d70 [ORD=36] [ID=63]

0x5837d70: v2i64 = and 0x58373e0, 0x586b750 [ORD=26] [ID=59]

0x58373e0: v2i64 = bit_convert 0x586bc28 [ORD=25] [ID=55]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x586b750: v2i64,ch = load 0x555b2d4, 0x586b6c8, 0x5837a40<LD16[ConstantPool]> [ID=50]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586b6c8: i32 = add 0x58394f0, 0x586b640 [ID=42]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x586b640: i32 = X86ISD::Wrapper 0x586b5b8 [ID=34]

0x586b5b8: i32 = TargetConstantPool<<4 x i32> <i32 15, i32 15, i32 15, i32 15>> 0 [TF=2] [ID=26]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868350: v4f32,ch = load 0x555b2d4, 0x58689c0, 0x5837a40<LD16[ConstantPool]> [ID=48]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58689c0: i32 = add 0x58394f0, 0x58687a0 [ID=40]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x58687a0: i32 = X86ISD::Wrapper 0x5868570 [ID=32]

0x5868570: i32 = TargetConstantPool<<4 x float> <float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000>> 0 [TF=2] [ID=24]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868e00: v4f32,ch = load 0x555b2d4, 0x586ab18, 0x5837a40<LD16[ConstantPool]> [ID=49]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586ab18: i32 = add 0x58394f0, 0x5869020 [ID=41]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x5869020: i32 = X86ISD::Wrapper 0x5868f10 [ID=33]

0x5868f10: i32 = TargetConstantPool<<4 x float> <float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000>> 0 [TF=2] [ID=25]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868938: v4f32 = bit_convert 0x58688b0 [ORD=96] [ID=97]

0x58688b0: v4i32 = llvm.x86.sse2.cvttps2dq 0x58681b8, 0x5868828 [ORD=95] [ID=93]

0x58681b8: i32 = Constant<629> [ORD=80] [ID=13]

0x5868828: v4f32 = fmul 0x5867e88, 0x5868e00 [ORD=94] [ID=89]

0x5867e88: v4f32 = fmul 0x5867e00, 0x5868350 [ORD=74] [ID=85]

0x5867e00: v4f32 = llvm.x86.sse2.cvtdq2ps 0x5839d70, 0x5867d78 [ORD=73] [ID=81]

0x5839d70: i32 = Constant<617> [ORD=56] [ID=12]

0x5867d78: v4i32 = bit_convert 0x586bed0 [ORD=72] [ID=77]

0x586bed0: v4f32 = X86ISD::MOVHLPS 0x586bcb0, 0x586bdc0 [ID=73]

0x586bcb0: v4f32 = X86ISD::UNPCKHPS 0x5839468, 0x5839578 [ID=67]

0x5839468: v4f32 = bit_convert 0x5837248 [ORD=34] [ID=64]

0x5837248: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837688, 0x5837138 [ORD=29] [ID=61]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837688: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5837930 [ORD=24] [ID=57]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837930: i32 = Constant<24> [ORD=24] [ID=8]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x5839578: v4f32 = bit_convert 0x5837d70 [ORD=36] [ID=63]

0x5837d70: v2i64 = and 0x58373e0, 0x586b750 [ORD=26] [ID=59]

0x58373e0: v2i64 = bit_convert 0x586bc28 [ORD=25] [ID=55]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x586b750: v2i64,ch = load 0x555b2d4, 0x586b6c8, 0x5837a40<LD16[ConstantPool]> [ID=50]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586b6c8: i32 = add 0x58394f0, 0x586b640 [ID=42]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x586b640: i32 = X86ISD::Wrapper 0x586b5b8 [ID=34]

0x586b5b8: i32 = TargetConstantPool<<4 x i32> <i32 15, i32 15, i32 15, i32 15>> 0 [TF=2] [ID=26]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x586bdc0: v4f32 = X86ISD::UNPCKHPS 0x58372d0, 0x5839358 [ID=69]

0x58372d0: v4f32 = bit_convert 0x5837578 [ORD=30] [ID=60]

0x5837578: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837028, 0x5837820 [ORD=27] [ID=56]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837820: i32 = Constant<12> [ORD=27] [ID=10]

0x5839358: v4f32 = bit_convert 0x58371c0 [ORD=32] [ID=65]

0x58371c0: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837bd8, 0x5837138 [ORD=28] [ID=62]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837bd8: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5838fa0 [ORD=23] [ID=58]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5838fa0: i32 = Constant<20> [ORD=23] [ID=7]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x5868350: v4f32,ch = load 0x555b2d4, 0x58689c0, 0x5837a40<LD16[ConstantPool]> [ID=48]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58689c0: i32 = add 0x58394f0, 0x58687a0 [ID=40]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x58687a0: i32 = X86ISD::Wrapper 0x5868570 [ID=32]

0x5868570: i32 = TargetConstantPool<<4 x float> <float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000>> 0 [TF=2] [ID=24]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868e00: v4f32,ch = load 0x555b2d4, 0x586ab18, 0x5837a40<LD16[ConstantPool]> [ID=49]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586ab18: i32 = add 0x58394f0, 0x5869020 [ID=41]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x5869020: i32 = X86ISD::Wrapper 0x5868f10 [ID=33]

0x5868f10: i32 = TargetConstantPool<<4 x float> <float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000>> 0 [TF=2] [ID=25]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x586c200: v4f32 = X86ISD::UNPCKHPS 0x58682c8, 0x58684e8 [ID=99]

0x58682c8: v4f32 = bit_convert 0x5868240 [ORD=81] [ID=94]

0x5868240: v4i32 = llvm.x86.sse2.cvttps2dq 0x58681b8, 0x5868130 [ORD=80] [ID=90]

0x58681b8: i32 = Constant<629> [ORD=80] [ID=13]

0x5868130: v4f32 = fmul 0x5867828, 0x5868e00 [ORD=79] [ID=86]

0x5867828: v4f32 = fmul 0x5867608, 0x5868350 [ORD=59] [ID=82]

0x5867608: v4f32 = llvm.x86.sse2.cvtdq2ps 0x5839d70, 0x5839ce8 [ORD=56] [ID=78]

0x5839d70: i32 = Constant<617> [ORD=56] [ID=12]

0x5839ce8: v4i32 = bit_convert 0x586c068 [ORD=55] [ID=74]

0x586c068: v4f32 = X86ISD::MOVLHPS 0x586be48, 0x586bd38 [ID=70]

0x586be48: v4f32 = X86ISD::UNPCKLPS 0x58372d0, 0x5839358 [ID=68]

0x58372d0: v4f32 = bit_convert 0x5837578 [ORD=30] [ID=60]

0x5837578: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837028, 0x5837820 [ORD=27] [ID=56]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837820: i32 = Constant<12> [ORD=27] [ID=10]

0x5839358: v4f32 = bit_convert 0x58371c0 [ORD=32] [ID=65]

0x58371c0: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837bd8, 0x5837138 [ORD=28] [ID=62]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837bd8: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5838fa0 [ORD=23] [ID=58]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5838fa0: i32 = Constant<20> [ORD=23] [ID=7]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x586bd38: v4f32 = X86ISD::UNPCKLPS 0x5839468, 0x5839578 [ID=66]

0x5839468: v4f32 = bit_convert 0x5837248 [ORD=34] [ID=64]

0x5837248: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837688, 0x5837138 [ORD=29] [ID=61]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837688: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5837930 [ORD=24] [ID=57]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837930: i32 = Constant<24> [ORD=24] [ID=8]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x5839578: v4f32 = bit_convert 0x5837d70 [ORD=36] [ID=63]

0x5837d70: v2i64 = and 0x58373e0, 0x586b750 [ORD=26] [ID=59]

0x58373e0: v2i64 = bit_convert 0x586bc28 [ORD=25] [ID=55]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x586b750: v2i64,ch = load 0x555b2d4, 0x586b6c8, 0x5837a40<LD16[ConstantPool]> [ID=50]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586b6c8: i32 = add 0x58394f0, 0x586b640 [ID=42]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x586b640: i32 = X86ISD::Wrapper 0x586b5b8 [ID=34]

0x586b5b8: i32 = TargetConstantPool<<4 x i32> <i32 15, i32 15, i32 15, i32 15>> 0 [TF=2] [ID=26]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868350: v4f32,ch = load 0x555b2d4, 0x58689c0, 0x5837a40<LD16[ConstantPool]> [ID=48]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58689c0: i32 = add 0x58394f0, 0x58687a0 [ID=40]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x58687a0: i32 = X86ISD::Wrapper 0x5868570 [ID=32]

0x5868570: i32 = TargetConstantPool<<4 x float> <float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000>> 0 [TF=2] [ID=24]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868e00: v4f32,ch = load 0x555b2d4, 0x586ab18, 0x5837a40<LD16[ConstantPool]> [ID=49]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586ab18: i32 = add 0x58394f0, 0x5869020 [ID=41]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x5869020: i32 = X86ISD::Wrapper 0x5868f10 [ID=33]

0x5868f10: i32 = TargetConstantPool<<4 x float> <float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000>> 0 [TF=2] [ID=25]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x58684e8: v4f32 = bit_convert 0x5868460 [ORD=86] [ID=95]

0x5868460: v4i32 = llvm.x86.sse2.cvttps2dq 0x58681b8, 0x58683d8 [ORD=85] [ID=91]

0x58681b8: i32 = Constant<629> [ORD=80] [ID=13]

0x58683d8: v4f32 = fmul 0x5867a48, 0x5868e00 [ORD=84] [ID=87]

0x5867a48: v4f32 = fmul 0x58679c0, 0x5868350 [ORD=64] [ID=83]

0x58679c0: v4f32 = llvm.x86.sse2.cvtdq2ps 0x5839d70, 0x5867938 [ORD=63] [ID=79]

0x5839d70: i32 = Constant<617> [ORD=56] [ID=12]

0x5867938: v4i32 = bit_convert 0x586bfe0 [ORD=62] [ID=75]

0x586bfe0: v4f32 = X86ISD::MOVHLPS 0x586bd38, 0x586be48 [ID=71]

0x586bd38: v4f32 = X86ISD::UNPCKLPS 0x5839468, 0x5839578 [ID=66]

0x5839468: v4f32 = bit_convert 0x5837248 [ORD=34] [ID=64]

0x5837248: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837688, 0x5837138 [ORD=29] [ID=61]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837688: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5837930 [ORD=24] [ID=57]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837930: i32 = Constant<24> [ORD=24] [ID=8]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x5839578: v4f32 = bit_convert 0x5837d70 [ORD=36] [ID=63]

0x5837d70: v2i64 = and 0x58373e0, 0x586b750 [ORD=26] [ID=59]

0x58373e0: v2i64 = bit_convert 0x586bc28 [ORD=25] [ID=55]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x586b750: v2i64,ch = load 0x555b2d4, 0x586b6c8, 0x5837a40<LD16[ConstantPool]> [ID=50]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586b6c8: i32 = add 0x58394f0, 0x586b640 [ID=42]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x586b640: i32 = X86ISD::Wrapper 0x586b5b8 [ID=34]

0x586b5b8: i32 = TargetConstantPool<<4 x i32> <i32 15, i32 15, i32 15, i32 15>> 0 [TF=2] [ID=26]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x586be48: v4f32 = X86ISD::UNPCKLPS 0x58372d0, 0x5839358 [ID=68]

0x58372d0: v4f32 = bit_convert 0x5837578 [ORD=30] [ID=60]

0x5837578: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837028, 0x5837820 [ORD=27] [ID=56]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5837820: i32 = Constant<12> [ORD=27] [ID=10]

0x5839358: v4f32 = bit_convert 0x58371c0 [ORD=32] [ID=65]

0x58371c0: v4i32 = llvm.x86.sse2.psrli.d 0x5837ac8, 0x5837bd8, 0x5837138 [ORD=28] [ID=62]

0x5837ac8: i32 = Constant<689> [ORD=27] [ID=9]

0x5837bd8: v4i32 = llvm.x86.sse2.pslli.d 0x5839138, 0x5837028, 0x5838fa0 [ORD=23] [ID=58]

0x5839138: i32 = Constant<677> [ORD=23] [ID=6]

0x5837028: v4i32 = bit_convert 0x586bc28 [ORD=22] [ID=54]

0x586bc28: v8i16 = X86ISD::PUNPCKLWD 0x58378a8, 0x5867f10 [ID=53]

0x58378a8: v8i16 = bit_convert 0x586ba08 [ORD=20] [ID=52]

0x586ba08: v2f64 = X86ISD::VZEXT_MOVL 0x586b860 [ID=51]

0x586b860: v2f64 = scalar_to_vector 0x58379b8 [ID=43]

0x58379b8: f64,ch = load 0x555b2d4, 0x5837ce8, 0x5837a40<LD8[%19]> [ORD=17] [ID=35]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x5837ce8: i32,ch = CopyFromReg 0x555b2d4, 0x58374f0 [ORD=14] [ID=28]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58374f0: i32 = Register %reg16395 [ORD=14] [ID=1]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5867f10: v8i16 = bit_convert 0x5867cf0 [ID=39]

0x5867cf0: v4i32 = BUILD_VECTOR 0x5867ad0, 0x5867ad0, 0x5867ad0, 0x5867ad0 [ID=31]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5867ad0: i32 = TargetConstant<0> [ID=23]

0x5838fa0: i32 = Constant<20> [ORD=23] [ID=7]

0x5837138: i32 = Constant<28> [ORD=28] [ID=11]

0x5868350: v4f32,ch = load 0x555b2d4, 0x58689c0, 0x5837a40<LD16[ConstantPool]> [ID=48]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x58689c0: i32 = add 0x58394f0, 0x58687a0 [ID=40]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x58687a0: i32 = X86ISD::Wrapper 0x5868570 [ID=32]

0x5868570: i32 = TargetConstantPool<<4 x float> <float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000, float 0x3FB1111120000000>> 0 [TF=2] [ID=24]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5868e00: v4f32,ch = load 0x555b2d4, 0x586ab18, 0x5837a40<LD16[ConstantPool]> [ID=49]

0x555b2d4: ch = EntryToken [ORD=14] [ID=0]

0x586ab18: i32 = add 0x58394f0, 0x5869020 [ID=41]

0x58394f0: i32 = X86ISD::GlobalBaseReg [ID=22]

0x5869020: i32 = X86ISD::Wrapper 0x5868f10 [ID=33]

0x5868f10: i32 = TargetConstantPool<<4 x float> <float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000, float 0x406FFFFFE0000000>> 0 [TF=2] [ID=25]

0x5837a40: i32 = undef [ORD=17] [ID=5]

0x5837930: i32 = Constant<24> [ORD=24] [ID=8]

Program ended with exit code: 1

问题解决:出错的运行环境是(2011 15" MBP+cocos2d 0.99.5+iPad 4.3 Simulator)。旧MBP+cocos2d 0.995+iPad 4.3 Simulator:通过。
2011 15" MBP+cocos2d 0.995+iPad 4.3 Device:通过。
2011 15" MBP+cocos2d 0.995+iPad older Simulator:通过。

查了一下,网上集中在New sandy bridge MBP+OpenGL+4.3 Simulator,这组合都有这个问题,可能是新MBP使用的新硬件导致的LLVM的bug。

警告多次引用问题

问题描述:今天做Geely车展项目iPad版,编译出现如下4条类似警告

Warning: Multiple build commands for output file /Users/CouldHll/Library/Developer/Xcode/DerivedData/Geely-grefjmjqcpmyxhdfmcisltnaoxju/Build/Products/Debug-iphonesimulator/Geely.app/3_tube_selection_color_1.png

问题分析:显然问题肯定是引用多次图片导致

问题解决:发现以前已经有引用了相同的文件名。删除其中一个,解决了。

类一定要继承

问题描述
今天做Denizen Box, 遇到一个奇怪的问题,问题描述如下:

2011-03-29 11:35:14.237 Box[6271:207] *** NSInvocation: warning: object 0x117c98 of class 'Config' does not implement doesNotRecognizeSelector: -- abort

问题分析
看到Config.h里:

@interface Config

没有继承任何类

问题解决
改成:

@interface Config : NSObject

一切安逸了。

iPad 图片加载效率

应朋友要做一个家具360展示的iPad App,故做了一些图片加载的效率测试。之前做AD杂志,也是遇到iPad加载图片速度不快的问题,特别是大图。

今天做了一些测试,本测试使用的是cocos2d类库。最终效果由5个层叠加而成:主背景层、壁纸层、地毯层、沙发层、茶几层,都是带透明通道的。

首先,用1920×1080图片进行测试,5层一套加载时间为2秒多。1层加载完成帧率是30,5层加载完成帧率8.6。

再次,用1024×768图片进行测试,5层一套加载时间为1秒多。1层加载完成帧率是30,5层加载完成帧率7.5。

以上为模拟器上测试,真机上测试结果差不多,但是帧率会高很多。采用单张图片即时load速度肯定跟不上,所以以下测试采用预load图片的方法进行测试。

用1024×768图片(每张图片500K左右)1层进行测试,预load内存到25M的时候内存不足,iPad中止。模拟器上因为没有内存限制,load好后非常流畅。

压缩图片到每张50K,用1层640×480带透明通道的图片拉大到1024×768,在真机上可以跑到60帧。但是当用2层640×480图片进行测试,发现内存急速增长,在内存使用达到20M的时候崩溃自动推出。说明,带透明图层不光会占用CPU资源,对内存资源也消耗巨大。在今年iOS开发者大会上,美国佬也是腔调了这一点,能关透明的时候尽量关闭透明,以增加帧率。

后缩小第二层图片的尺寸,内存还是几何型增长。最后放弃了多图层。

所以360展示,现在只能使用一张图片,而不能使用多图层叠加方式。

cocos2d 0.99.5需要手动开启多点触摸支持

问题描述
这几天做Denizen Box,碰到不支持多点触摸,只能单点。

问题分析
使用的代码和之前Puzzle使用的是一样,唯一不同的是类库的版本。
Box使用的是cocos2d 0.99.5,而Puzzle使用的是cocos2d 0.99.4。

问题解决
0.99.5取消了自动多触点支持,所以要手动启用。

在AppDelegate.m的- (void) applicationDidFinishLaunching:(UIApplication*)application中加入:
viewController.view.multipleTouchEnabled = YES;

plist保存问题

问题描述
今天做Denizen Box,需要收集用户资料,用[NSDictionary writeToFile: atomically:]方法保存。模拟上此函数成功,返回true;真机上此函数失败,返回false。

问题分析
代码如下:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
bool result=[addDictionary writeToFile:plistPath atomically:YES];

代码没有变化,而真机就是写入不了,猜想是权限问题。

问题解决
把代码改为:

NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:0];
NSString *plistPath=[doucumentsDirectiory stringByAppendingPathComponent:@"data.plist"];
bool result=[addDictionary writeToFile:plistPath atomically:YES];

问题解决了。

事后发现,路径不一样:
修改前:

/var/mobile/Applications/A528A4DE-F391-4247-8C5D-9386DC415A00/Box.app/data.plist

修改后:

/var/mobile/Applications/A528A4DE-F391-4247-8C5D-9386DC415A00/Documents/data.plist

不同SDK对pathForResource函数兼容问题

问题描述
前些天做AD iPad版,程序在4.2版本的iPad上运行良好,但是安装到3.2版本的iPad上有些功能点load不出。

问题分析
设置断点,一步一步跟踪,查找到:

// init position
NSString *plistPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d/feature_point",[self getPage]] ofType:@"plist"];
_positions=[[NSDictionary alloc] initWithContentsOfFile:plistPath];

以上代码plistPath值为空,查找这句中所有的语句的SDK支持,都只要SDK2.0,而我们是3.2,完全符合。

问题解决
一步一步排除,最后焦点在pathForResource: ofType:函数,查找SDK的时候发现另有一个函数是pathForResource: ofType: inDirectory:函数,把该句改为:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"feature_point" ofType:@"plist" inDirectory:[NSString stringWithFormat:@"%d",[self getPage]]];

问题解决了!!!