NitzDKoder / libyuv

Automatically exported from code.google.com/p/libyuv
0 stars 0 forks source link

arm64 port from gcc to clang #357

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Chromium try bots fail on arm64:
http://build.chromium.org/p/tryserver.chromium.linux/builders/android_arm64_dbg_
recipe/builds/3572

[345/1024 | 60.527] LINK url_unittests
[346/1024 | 60.529] ACTION sandbox_linux_unittests_stripped: strip 
sandbox_linux_unittests_c89e43602a162169e8ae91787c40bf47
FAILED: if [ ! -e lib/libsnapshot_unittests.so -o ! -e 
lib/libsnapshot_unittests.so.TOC ]; then /mnt/scratch0/b_used/build/goma/gomacc 
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/third_party/
android_tools/ndk//toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bi
n/aarch64-linux-android-g++ -shared -Wl,-z,now -Wl,-z,relro 
-Wl,--fatal-warnings -Wl,-z,noexecstack -fPIC -nostdlib -Wl,--no-undefined 
--sysroot=/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/th
ird_party/android_tools/ndk//platforms/android-L/arch-arm64 
-L/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/third_part
y/android_tools/ndk//sources/cxx-stl/stlport/libs/arm64-v8a 
-Wl,-shared,-Bsymbolic 
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/third_party/
android_tools/ndk//platforms/android-L/arch-arm64/usr/lib/crtbegin_so.o 
-Wl,--warn-shared-textrel -Wl,-O1 -Wl,--as-needed -o 
lib/libsnapshot_unittests.so -Wl,-soname=libsnapshot_unittests.so 
@lib/libsnapshot_unittests.so.rsp && { readelf -d lib/libsnapshot_unittests.so 
| grep SONAME ; nm -gD -f p lib/libsnapshot_unittests.so | cut -f1-2 -d' '; } > 
lib/libsnapshot_unittests.so.TOC; else /mnt/scratch0/b_used/build/goma/gomacc 
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/third_party/
android_tools/ndk//toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bi
n/aarch64-linux-android-g++ -shared -Wl,-z,now -Wl,-z,relro 
-Wl,--fatal-warnings -Wl,-z,noexecstack -fPIC -nostdlib -Wl,--no-undefined 
--sysroot=/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/th
ird_party/android_tools/ndk//platforms/android-L/arch-arm64 
-L/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/third_part
y/android_tools/ndk//sources/cxx-stl/stlport/libs/arm64-v8a 
-Wl,-shared,-Bsymbolic 
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/third_party/
android_tools/ndk//platforms/android-L/arch-arm64/usr/lib/crtbegin_so.o 
-Wl,--warn-shared-textrel -Wl,-O1 -Wl,--as-needed -o 
lib/libsnapshot_unittests.so -Wl,-soname=libsnapshot_unittests.so 
@lib/libsnapshot_unittests.so.rsp && { readelf -d lib/libsnapshot_unittests.so 
| grep SONAME ; nm -gD -f p lib/libsnapshot_unittests.so | cut -f1-2 -d' '; } > 
lib/libsnapshot_unittests.so.tmp && if ! cmp -s 
lib/libsnapshot_unittests.so.tmp lib/libsnapshot_unittests.so.TOC; then mv 
lib/libsnapshot_unittests.so.tmp lib/libsnapshot_unittests.so.TOC ; fi; fi
libyuv.a(libyuv.row_any.o): In function `ARGBToRGB565Row_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:173: undefined reference to 
`ARGBToRGB565Row_NEON'
libyuv.a(libyuv.row_any.o): In function `ARGBToARGB1555Row_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:175: undefined reference to 
`ARGBToARGB1555Row_NEON'
libyuv.a(libyuv.row_any.o): In function `ARGBToARGB4444Row_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:177: undefined reference to 
`ARGBToARGB4444Row_NEON'
libyuv.a(libyuv.row_any.o): In function `I400ToARGBRow_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:179: undefined reference to 
`I400ToARGBRow_NEON'
libyuv.a(libyuv.row_any.o): In function `YToARGBRow_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:181: undefined reference to 
`YToARGBRow_NEON'
libyuv.a(libyuv.row_any.o): In function `YUY2ToARGBRow_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:183: undefined reference to 
`YUY2ToARGBRow_NEON'
libyuv.a(libyuv.row_any.o): In function `UYVYToARGBRow_Any_NEON':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/row_any.cc:185: undefined reference to 
`UYVYToARGBRow_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown34':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:266: undefined reference to 
`ScaleRowDown34_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:266: undefined reference to 
`ScaleRowDown34_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown2':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:58: undefined reference to 
`ScaleRowDown2Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:58: undefined reference to 
`ScaleRowDown2Box_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown38':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:442: undefined reference to 
`ScaleRowDown38_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:442: undefined reference to 
`ScaleRowDown38_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown4':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:169: undefined reference to 
`ScaleRowDown4Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:169: undefined reference to 
`ScaleRowDown4Box_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown34':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:269: undefined reference to 
`ScaleRowDown34_1_Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:268: undefined reference to 
`ScaleRowDown34_0_Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:269: undefined reference to 
`ScaleRowDown34_1_Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:268: undefined reference to 
`ScaleRowDown34_0_Box_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown2':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:58: undefined reference to 
`ScaleRowDown2_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:58: undefined reference to 
`ScaleRowDown2_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown38':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:445: undefined reference to 
`ScaleRowDown38_2_Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:444: undefined reference to 
`ScaleRowDown38_3_Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:445: undefined reference to 
`ScaleRowDown38_2_Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:444: undefined reference to 
`ScaleRowDown38_3_Box_NEON'
libyuv.a(libyuv.scale.o): In function `ScalePlaneDown4':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:169: undefined reference to 
`ScaleRowDown4_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale.cc:169: undefined reference to 
`ScaleRowDown4_NEON'
libyuv.a(libyuv.scale_argb.o): In function `ScaleARGBDown2':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:67: undefined reference to 
`ScaleARGBRowDown2Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:67: undefined reference to 
`ScaleARGBRowDown2Box_NEON'
libyuv.a(libyuv.scale_argb.o): In function `ScaleARGBDown4Box':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:109: undefined reference to 
`ScaleARGBRowDown2Box_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:109: undefined reference to 
`ScaleARGBRowDown2Box_NEON'
libyuv.a(libyuv.scale_argb.o): In function `ScaleARGBDownEven':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:151: undefined reference to 
`ScaleARGBRowDownEvenBox_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:151: undefined reference to 
`ScaleARGBRowDownEvenBox_NEON'
libyuv.a(libyuv.scale_argb.o): In function `ScaleARGBDown2':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:67: undefined reference to 
`ScaleARGBRowDown2_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:67: undefined reference to 
`ScaleARGBRowDown2_NEON'
libyuv.a(libyuv.scale_argb.o): In function `ScaleARGBDownEven':
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:151: undefined reference to 
`ScaleARGBRowDownEven_NEON'
/mnt/scratch0/b_used/build/slave/android_arm64_dbg_recipe/build/src/out/Debug/..
/../third_party/libyuv/source/scale_argb.cc:151: undefined reference to 
`ScaleARGBRowDownEven_NEON'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

/mnt/scratch0/b_used/build/goma/goma_ctl.sh stat
request: total=69 success=68 failure=1
 goma: finished=52 cache_hit=15 aborted=1 retry=0 fail=0
 local: run=17 killed=0 finished=16
 local run reason:
  local idle=1
  should fallback=15
  slow goma, local run started in FILE_REQ=1
files: requested=8195 uploaded=2659 missed=0
outputs: files=104 rename=104 max_sum_size=2603015
memory: consuming=67690496
time: uptime=75
http_rpc: query=16 retry=0 timeout=0 error=0

/mnt/scratch0/b_used/build/goma/goma_ctl.sh stop
Killing compiler proxy (pid=13761):  http://127.0.0.1:8088 
done.

/mnt/scratch0/b_used/build/scripts/slave/gsutil cp file:///tmp/tmpSkioE_ 
gs://chrome-goma-log/2014/09/10/slave463-c4/compiler_proxy.slave463-c4.chrome-bo
t.log.INFO.20140910-032731.13761.gz
Copying file:///tmp/tmpSkioE_ [Content-Type=application/octet-stream]...
Copied log file to 
gs://chrome-goma-log/2014/09/10/slave463-c4/compiler_proxy.slave463-c4.chrome-bo
t.log.INFO.20140910-032731.13761.gz

/mnt/scratch0/b_used/build/scripts/slave/gsutil cp file:///tmp/tmp5dCQgv 
gs://chrome-goma-log/2014/09/10/slave463-c4/ninja_log.slave463-c4.chrome-bot.201
40910-032846.13673.gz
Copying file:///tmp/tmp5dCQgv [Content-Type=application/octet-stream]...
Copied log file to 
gs://chrome-goma-log/2014/09/10/slave463-c4/ninja_log.slave463-c4.chrome-bot.201
40910-032846.13673.gz

@@@STEP_CURSOR compile@@@

@@@STEP_FAILURE@@@

Original issue reported on code.google.com by fbarch...@google.com on 10 Sep 2014 at 5:23

GoogleCodeExporter commented 9 years ago
the libyuv.gyp disabled the libyuv_neon library.  enabling it, there are build 
errors on ios

GYP_DEFINES="OS=ios target_arch=armv7 target_subarch=64" GYP_CROSSCOMPILE=1 
GYP_GENERATOR_FLAGS="output_dir=out_ios" ./gyp_libyuv -f ninja --depth=. 
libyuv_test.gyp 

bash-3.2$ ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
ninja: Entering directory `out_ios/Debug-iphoneos'
[7/127] CXX obj/source/libyuv_neon.rotate_neon64.armv7s.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.rotate_neon64.armv7s.o.d 
-DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL 
-DCHROMIUM_BUILD -DCR_CLANG_REVISION=209387 -DUSE_LIBJPEG_TURBO=1 
-DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DCLD_DATA_FROM_STATIC -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 
-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen 
-I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=6.0 -arch armv7s -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing 
-Wno-char-subscripts -Wno-unneeded-internal-declaration 
-Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register 
-Wno-selector-type-mismatch -Wno-unknown-warning-option -std=gnu++0x -fno-rtti 
-fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics 
-fcolor-diagnostics -fstack-protector-all  -c ../../source/rotate_neon64.cc -o 
obj/source/libyuv_neon.rotate_neon64.armv7s.o
../../source/rotate_neon64.cc:20:2: error: unterminated conditional directive
#if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
 ^
../../source/rotate_neon64.cc:540:7: error: expected '}'
#endif
      ^
../../source/rotate_neon64.cc:17:12: note: to match this '{'
extern "C" {
           ^
../../source/rotate_neon64.cc:540:7: error: expected '}'
#endif
      ^
../../source/rotate_neon64.cc:16:18: note: to match this '{'
namespace libyuv {
                 ^
3 errors generated.

Original comment by fbarch...@chromium.org on 10 Sep 2014 at 9:40

GoogleCodeExporter commented 9 years ago
Fixing the ifdefs there are errors in the 64 bit code.
Here are 2 examples
../../source/row_neon64.cc:859:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:10:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:878:6: error: ',' expected
    "ld1        {v0.8b-v3.8b}, [%0], #32       \n"  // load 32
     ^

Original comment by fbarch...@chromium.org on 12 Sep 2014 at 1:17

GoogleCodeExporter commented 9 years ago
r1081 fixes ifdefs so arm64 will be compiled, but armv7 32 bit will not.
A gyp change to enable arm64 is not checked in, as there are compile errors 
that need to be resolved.
Follow Getting Started ios arm64 instructions to repro.

Original comment by fbarch...@chromium.org on 12 Sep 2014 at 1:58

GoogleCodeExporter commented 9 years ago
More complete list of errors:
bash-3.2$ GYP_DEFINES="OS=ios target_arch=armv7 target_subarch=64" 
GYP_CROSSCOMPILE=1 GYP_GENERATOR_FLAGS="output_dir=out_ios" ./gyp_libyuv -f 
ninja --depth=. libyuv_test.gyp 
Updating projects from gyp files...
bash-3.2$  ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
ninja: Entering directory `out_ios/Debug-iphoneos'
[98/289] CXX obj/source/libyuv_neon.compare_neon.arm64.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.compare_neon.arm64.o.d 
-DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL 
-DCHROMIUM_BUILD -DCR_CLANG_REVISION=209387 -DUSE_LIBJPEG_TURBO=1 
-DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DCLD_DATA_FROM_STATIC -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 
-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen 
-I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=6.0 -arch arm64 -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing 
-Wno-char-subscripts -Wno-unneeded-internal-declaration 
-Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register 
-Wno-selector-type-mismatch -Wno-unknown-warning-option -std=gnu++0x -fno-rtti 
-fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics 
-fcolor-diagnostics -fstack-protector-all  -c ../../source/compare_neon.cc -o 
obj/source/libyuv_neon.compare_neon.arm64.o
../../source/compare_neon.cc:83:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:18:1: note: instantiated into assembly here
bgt        1b                             
^
1 error generated.
[98/289] CXX obj/source/libyuv_neon.scale_neon64.arm64.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.scale_neon64.arm64.o.d 
-DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL 
-DCHROMIUM_BUILD -DCR_CLANG_REVISION=209387 -DUSE_LIBJPEG_TURBO=1 
-DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DCLD_DATA_FROM_STATIC -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 
-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen 
-I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=6.0 -arch arm64 -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing 
-Wno-char-subscripts -Wno-unneeded-internal-declaration 
-Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register 
-Wno-selector-type-mismatch -Wno-unknown-warning-option -std=gnu++0x -fno-rtti 
-fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics 
-fcolor-diagnostics -fstack-protector-all  -c ../../source/scale_neon64.cc -o 
obj/source/libyuv_neon.scale_neon64.arm64.o
../../source/scale_neon64.cc:548:6: error: unrecognized instruction mnemonic
    "beq          100f                         \n"
     ^
<inline asm>:2:1: note: instantiated into assembly here
beq          100f                         
^
../../source/scale_neon64.cc:551:6: error: unrecognized instruction mnemonic
    "beq          75f                          \n"
     ^
<inline asm>:5:1: note: instantiated into assembly here
beq          75f                          
^
../../source/scale_neon64.cc:553:6: error: unrecognized instruction mnemonic
    "beq          50f                          \n"
     ^
<inline asm>:7:1: note: instantiated into assembly here
beq          50f                          
^
../../source/scale_neon64.cc:555:6: error: unrecognized instruction mnemonic
    "beq          25f                          \n"
     ^
<inline asm>:9:1: note: instantiated into assembly here
beq          25f                          
^
../../source/scale_neon64.cc:574:6: error: unrecognized instruction mnemonic
    "bgt          1b                           \n"
     ^
<inline asm>:26:1: note: instantiated into assembly here
bgt          1b                           
^
../../source/scale_neon64.cc:588:6: error: unrecognized instruction mnemonic
    "bgt          25b                          \n"
     ^
<inline asm>:38:1: note: instantiated into assembly here
bgt          25b                          
^
../../source/scale_neon64.cc:601:6: error: unrecognized instruction mnemonic
    "bgt          50b                          \n"
     ^
<inline asm>:49:1: note: instantiated into assembly here
bgt          50b                          
^
../../source/scale_neon64.cc:615:6: error: unrecognized instruction mnemonic
    "bgt          75b                          \n"
     ^
<inline asm>:61:1: note: instantiated into assembly here
bgt          75b                          
^
../../source/scale_neon64.cc:625:6: error: unrecognized instruction mnemonic
    "bgt          100b                         \n"
     ^
<inline asm>:69:1: note: instantiated into assembly here
bgt          100b                         
^
9 errors generated.
[98/289] CXX obj/source/libyuv_neon.row_neon64.arm64.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.row_neon64.arm64.o.d 
-DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL 
-DCHROMIUM_BUILD -DCR_CLANG_REVISION=209387 -DUSE_LIBJPEG_TURBO=1 
-DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DCLD_DATA_FROM_STATIC -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 
-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen 
-I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=6.0 -arch arm64 -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing 
-Wno-char-subscripts -Wno-unneeded-internal-declaration 
-Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register 
-Wno-selector-type-mismatch -Wno-unknown-warning-option -std=gnu++0x -fno-rtti 
-fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics 
-fcolor-diagnostics -fstack-protector-all  -c ../../source/row_neon64.cc -o 
obj/source/libyuv_neon.row_neon64.arm64.o
../../source/row_neon64.cc:1317:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(stride_yuy2),  // %1
         ^
../../source/row_neon64.cc:1317:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/row_neon64.cc:1347:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(stride_uyvy),  // %1
         ^
../../source/row_neon64.cc:1347:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/row_neon64.cc:1374:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(src_uv_stride),  // %1
         ^
../../source/row_neon64.cc:1374:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/row_neon64.cc:1374:10: warning: value size does not match register 
size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/row_neon64.cc:834:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:10:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:859:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:10:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:878:6: error: ',' expected
    "ld1        {v0.8b-v3.8b}, [%0], #32       \n"  // load 32
     ^
<inline asm>:4:18: note: instantiated into assembly here
ld1        {v0.8b-v3.8b}, [x9], #32       
                 ^
../../source/row_neon64.cc:881:6: error: ',' expected
    "st1        {v0.8b-v3.8b}, [%1], #32       \n"  // store 32
     ^
<inline asm>:7:18: note: instantiated into assembly here
st1        {v0.8b-v3.8b}, [x0], #32       
                 ^
../../source/row_neon64.cc:882:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:8:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:901:6: error: unrecognized instruction mnemonic
    "bgt       1b                              \n"
     ^
<inline asm>:6:1: note: instantiated into assembly here
bgt       1b                              
^
../../source/row_neon64.cc:939:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:13:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:968:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:14:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:996:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:13:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:1013:6: error: ',' expected
    "ld3        {v1.8b-v3.8b}, [%0], #24       \n"  // load 8 pixels of RGB24.
     ^
<inline asm>:5:18: note: instantiated into assembly here
ld3        {v1.8b-v3.8b}, [x9], #24       
                 ^
../../source/row_neon64.cc:1016:6: error: ',' expected
    "st4        {v1.8b-v4.8b}, [%1], #32       \n"  // store 8 pixels of ARGB.
     ^
<inline asm>:8:18: note: instantiated into assembly here
st4        {v1.8b-v4.8b}, [x0], #32       
                 ^
../../source/row_neon64.cc:1017:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:9:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:1034:6: error: ',' expected
    "ld3        {v0.8b-v2.8b}, [%0], #24       \n"  // read r g b
     ^
<inline asm>:5:18: note: instantiated into assembly here
ld3        {v0.8b-v2.8b}, [x9], #24       
                 ^
../../source/row_neon64.cc:1036:6: error: invalid operand for instruction
    "mov        v3.8b, v1.8b                   \n"  // move g
     ^
<inline asm>:7:12: note: instantiated into assembly here
mov        v3.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1037:6: error: invalid operand for instruction
    "mov        v4.8b, v0.8b                   \n"  // move r
     ^
<inline asm>:8:12: note: instantiated into assembly here
mov        v4.8b, v0.8b                   
           ^
../../source/row_neon64.cc:1039:6: error: ',' expected
    "st4        {v2.8b-v5.8b}, [%1], #32       \n"  // store b g r a
     ^
<inline asm>:10:18: note: instantiated into assembly here
st4        {v2.8b-v5.8b}, [x0], #32       
                 ^
../../source/row_neon64.cc:1040:6: error: unrecognized instruction mnemonic
    "bgt        1b                             \n"
     ^
<inline asm>:11:1: note: instantiated into assembly here
bgt        1b                             
^
../../source/row_neon64.cc:1173:6: error: ',' expected
    "ld4        {v1.8b-v4.8b}, [%0], #32       \n"  // load 8 pixels of ARGB.
     ^
<inline asm>:4:18: note: instantiated into assembly here
ld4        {v1.8b-v4.8b}, [x9], #32       
                 ^
../../source/row_neon64.cc:1176:6: error: ',' expected
    "st3        {v1.8b-v3.8b}, [%1], #24       \n"  // store 8 pixels of RGB24.
     ^
<inline asm>:7:18: note: instantiated into assembly here
st3        {v1.8b-v3.8b}, [x0], #24       
                 ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
7 warnings and 20 errors generated.
ninja: build stopped: subcommand failed.

Original comment by fbarch...@chromium.org on 15 Sep 2014 at 6:25

GoogleCodeExporter commented 9 years ago
Breaks into 4 issues:
bgt -> b.gt
v1.8b-v3.8b -> use , not -
mov v1,v2 -> use or v1, v2, v2
stride -> cast to ptrdiff_t

Original comment by fbarch...@chromium.org on 15 Sep 2014 at 6:26

GoogleCodeExporter commented 9 years ago
branches fixed in r1084

Original comment by fbarch...@google.com on 15 Sep 2014 at 10:46

GoogleCodeExporter commented 9 years ago
These are the current errors for clang
bash-3.2$  ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
ninja: Entering directory `out_ios/Debug-iphoneos'
[8/47] CXX obj/source/libyuv_neon.scale_neon64.arm64.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.scale_neon64.arm64.o.d 
-DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL 
-DCHROMIUM_BUILD -DCR_CLANG_REVISION=209387 -DUSE_LIBJPEG_TURBO=1 
-DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DCLD_DATA_FROM_STATIC -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 
-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen 
-I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=6.0 -arch arm64 -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing 
-Wno-char-subscripts -Wno-unneeded-internal-declaration 
-Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register 
-Wno-selector-type-mismatch -Wno-unknown-warning-option -std=gnu++0x -fno-rtti 
-fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics 
-fcolor-diagnostics -fstack-protector-all  -c ../../source/scale_neon64.cc -o 
obj/source/libyuv_neon.scale_neon64.arm64.o
../../source/scale_neon64.cc:125:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(dst_width), // %2
         ^
../../source/scale_neon64.cc:125:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/scale_neon64.cc:424:21: error: invalid use of a cast in a inline 
asm context requiring an l-value: remove the cast or build with 
-fheinous-gnu-extensions
    "+r"((ptrdiff_t)src_stride),       // %3
         ~~~~~~~~~~~^~~~~~~~~~
../../source/scale_neon64.cc:423:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(dst_width),        // %2
         ^
../../source/scale_neon64.cc:423:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/scale_neon64.cc:534:21: error: invalid use of a cast in a inline 
asm context requiring an l-value: remove the cast or build with 
-fheinous-gnu-extensions
    "+r"((ptrdiff_t)src_stride)     // %3
         ~~~~~~~~~~~^~~~~~~~~~
../../source/scale_neon64.cc:533:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(dst_width),     // %2
         ^
../../source/scale_neon64.cc:533:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
6 warnings and 2 errors generated.
[8/47] CXX obj/source/libyuv_neon.row_neon64.arm64.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.row_neon64.arm64.o.d 
-DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL 
-DCHROMIUM_BUILD -DCR_CLANG_REVISION=209387 -DUSE_LIBJPEG_TURBO=1 
-DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DCLD_DATA_FROM_STATIC -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 
-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen 
-I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=6.0 -arch arm64 -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing 
-Wno-char-subscripts -Wno-unneeded-internal-declaration 
-Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register 
-Wno-selector-type-mismatch -Wno-unknown-warning-option -std=gnu++0x -fno-rtti 
-fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics 
-fcolor-diagnostics -fstack-protector-all  -c ../../source/row_neon64.cc -o 
obj/source/libyuv_neon.row_neon64.arm64.o
../../source/row_neon64.cc:1036:6: error: invalid operand for instruction
    "mov        v3.8b, v1.8b                   \n"  // move g
     ^
<inline asm>:7:12: note: instantiated into assembly here
mov        v3.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1037:6: error: invalid operand for instruction
    "mov        v4.8b, v0.8b                   \n"  // move r
     ^
<inline asm>:8:12: note: instantiated into assembly here
mov        v4.8b, v0.8b                   
           ^
../../source/row_neon64.cc:1195:6: error: invalid operand for instruction
    "mov        v4.8b, v2.8b                   \n"  // mov g
     ^
<inline asm>:6:12: note: instantiated into assembly here
mov        v4.8b, v2.8b                   
           ^
../../source/row_neon64.cc:1196:6: error: invalid operand for instruction
    "mov        v5.8b, v1.8b                   \n"  // mov b
     ^
<inline asm>:7:12: note: instantiated into assembly here
mov        v5.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1463:6: error: invalid operand for instruction
    "mov        v2.8b, v1.8b                   \n"
     ^
<inline asm>:5:12: note: instantiated into assembly here
mov        v2.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1493:6: error: invalid operand for instruction
    "mov        v3.8b, v2.8b                   \n"
     ^
<inline asm>:5:12: note: instantiated into assembly here
mov        v3.8b, v2.8b                   
           ^
../../source/row_neon64.cc:1685:5: error: too few operands for instruction
    "movi       v20.8h, #112 / 2               \n"  // UB / VR 0.875 coefficient
    ^
<inline asm>:1:2: note: instantiated into assembly here
        movi       v20.8h, #112 / 2               
        ^
../../source/row_neon64.cc:1686:6: error: too few operands for instruction
    "movi       v21.8h, #74 / 2                \n"  // UG -0.5781 coefficient
     ^
<inline asm>:2:1: note: instantiated into assembly here
movi       v21.8h, #74 / 2                
^
../../source/row_neon64.cc:1687:6: error: too few operands for instruction
    "movi       v22.8h, #38 / 2                \n"  // UR -0.2969 coefficient
     ^
<inline asm>:3:1: note: instantiated into assembly here
movi       v22.8h, #38 / 2                
^
../../source/row_neon64.cc:1688:6: error: too few operands for instruction
    "movi       v23.8h, #18 / 2                \n"  // VB -0.1406 coefficient
     ^
<inline asm>:4:1: note: instantiated into assembly here
movi       v23.8h, #18 / 2                
^
../../source/row_neon64.cc:1689:6: error: too few operands for instruction
    "movi       v24.8h, #94 / 2                \n"  // VG -0.7344 coefficient
     ^
<inline asm>:5:1: note: instantiated into assembly here
movi       v24.8h, #94 / 2                
^
../../source/row_neon64.cc:1735:5: error: too few operands for instruction
    "movi       v20.8h, #112 / 2               \n"  // UB / VR 0.875 coefficient
    ^
<inline asm>:1:2: note: instantiated into assembly here
        movi       v20.8h, #112 / 2               
        ^
../../source/row_neon64.cc:1736:6: error: too few operands for instruction
    "movi       v21.8h, #74 / 2                \n"  // UG -0.5781 coefficient
     ^
<inline asm>:2:1: note: instantiated into assembly here
movi       v21.8h, #74 / 2                
^
../../source/row_neon64.cc:1737:6: error: too few operands for instruction
    "movi       v22.8h, #38 / 2                \n"  // UR -0.2969 coefficient
     ^
<inline asm>:3:1: note: instantiated into assembly here
movi       v22.8h, #38 / 2                
^
../../source/row_neon64.cc:1738:6: error: too few operands for instruction
    "movi       v23.8h, #18 / 2                \n"  // VB -0.1406 coefficient
     ^
<inline asm>:4:1: note: instantiated into assembly here
movi       v23.8h, #18 / 2                
^
../../source/row_neon64.cc:1739:6: error: too few operands for instruction
    "movi       v24.8h, #94 / 2                \n"  // VG -0.7344 coefficient
     ^
<inline asm>:5:1: note: instantiated into assembly here
movi       v24.8h, #94 / 2                
^
../../source/row_neon64.cc:2751:6: error: invalid operand for instruction
    "ld4        {v0.8b,v1.8b,v2.8b,v3.8b}[0], [%0], #4       \n"  // load 1 pixel ARGB0.
     ^
<inline asm>:30:37: note: instantiated into assembly here
ld4        {v0.8b,v1.8b,v2.8b,v3.8b}[0], [x9], #4       
                                    ^
../../source/row_neon64.cc:2753:6: error: invalid operand for instruction
    "ld4        {v4.8b,v5.8b,v6.8b,v7.8b}[0], [%1], #4       \n"  // load 1 pixel ARGB1.
     ^
<inline asm>:32:37: note: instantiated into assembly here
ld4        {v4.8b,v5.8b,v6.8b,v7.8b}[0], [x0], #4       
                                    ^
../../source/row_neon64.cc:2769:6: error: invalid operand for instruction
    "st4        {v0.8b,v1.8b,v2.8b,v3.8b}[0], [%2], #4       \n"  // store 1 pixel.
     ^
<inline asm>:48:37: note: instantiated into assembly here
st4        {v0.8b,v1.8b,v2.8b,v3.8b}[0], [x1], #4       
                                    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
[8/47] CXX obj/testing/gtest/src/gtest.gtest-port.armv7.o
ninja: build stopped: subcommand failed.
bash-3.2$ 

Original comment by fbarch...@chromium.org on 16 Sep 2014 at 4:24

GoogleCodeExporter commented 9 years ago
movi expects a constant, not an expression
mov doesnt work - use orr
index expects no register size. e.g. "ld4        {v0.b,v1.b,v2.b,v3.b}[0], 
[%0], #4       \n"  // load 1 pixel ARGB0.
strides need to be assigned to an lvalue.

width value issue unknown - works in most cases?
../../source/scale_neon64.cc:533:10: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
    "+r"(dst_width),     // %2

Original comment by fbarch...@chromium.org on 16 Sep 2014 at 6:31

GoogleCodeExporter commented 9 years ago
Frank, I could compile example code with ld1 {v1.8b-v3.8b} inline assembly on 
clang 3.5. clang 3.5 seems to support the extensions used in row_neon64.cc 
code. Which version of clang is being used for iOS build?

Original comment by ashok.b...@gmail.com on 16 Sep 2014 at 11:34

GoogleCodeExporter commented 9 years ago
Current libyuv chromium deps pull in clang 3.4

bash-3.2$ c++ --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix

Original comment by fbarch...@google.com on 17 Sep 2014 at 4:19

GoogleCodeExporter commented 9 years ago
It would be best if code can work on clang 3.4 but if its not possible the 
following check could be added to row.h

// clang >= 3.5.0 required for Arm64.
#if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON)
#if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 5))
#define LIBYUV_DISABLE_NEON
#endif  // clang >= 3.5
#endif  // __clang__

Original comment by fbarch...@chromium.org on 17 Sep 2014 at 5:19

GoogleCodeExporter commented 9 years ago
Since the changes required for clang 3.4 are not too many, we can support clang 
3.4. However, if possible it may be a good idea to migrate iOS to use clang 3.5 
in future.

Original comment by ashok.b...@gmail.com on 18 Sep 2014 at 3:40

GoogleCodeExporter commented 9 years ago
Current full list of errors is:

bash-3.2$  ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
ninja: Entering directory `out_ios/Debug-iphoneos'
[26/295] CXX obj/source/libyuv_neon.rotate_neon64.arm64.o
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
      "+r"(width)                                 // %3
           ^
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:241:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:526:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
      "+r"(width)                                 // %4
           ^
../../source/rotate_neon64.cc:526:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
19 warnings generated.
[30/295] CXX obj/source/libyuv_neon.row_neon64.arm64.o
FAILED: c++ -MMD -MF obj/source/libyuv_neon.row_neon64.arm64.o.d 
-DV8_DEPRECATION_WARNINGS -DDISABLE_NACL -DCHROMIUM_BUILD 
-DCR_CLANG_REVISION=214024 -DUSE_LIBJPEG_TURBO=1 -DENABLE_CONFIGURATION_POLICY 
-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY 
-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 
-DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 -DDYNAMIC_ANNOTATIONS_ENABLED=1 
-DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen -I../../include -I../.. -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof 
-miphoneos-version-min=7.0 -arch arm64 -Wendif-labels -Wno-unused-parameter 
-Wno-missing-field-initializers -Wno-selector-type-mismatch 
-Wno-unknown-warning-option -Wheader-hygiene -Wno-char-subscripts 
-Wno-unneeded-internal-declaration -Wno-covered-switch-default 
-Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -std=gnu++0x 
-stdlib=libstdc++ -fno-rtti -fno-exceptions -fvisibility-inlines-hidden 
-fno-threadsafe-statics -fno-slp-vectorize -fcolor-diagnostics 
-fstack-protector-all -Wno-undefined-bool-conversion 
-Wno-tautological-undefined-compare  -c ../../source/row_neon64.cc -o 
obj/source/libyuv_neon.row_neon64.arm64.o
../../source/row_neon64.cc:1036:6: error: invalid operand for instruction
    "mov        v3.8b, v1.8b                   \n"  // move g
     ^
<inline asm>:7:12: note: instantiated into assembly here
mov        v3.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1037:6: error: invalid operand for instruction
    "mov        v4.8b, v0.8b                   \n"  // move r
     ^
<inline asm>:8:12: note: instantiated into assembly here
mov        v4.8b, v0.8b                   
           ^
../../source/row_neon64.cc:1195:6: error: invalid operand for instruction
    "mov        v4.8b, v2.8b                   \n"  // mov g
     ^
<inline asm>:6:12: note: instantiated into assembly here
mov        v4.8b, v2.8b                   
           ^
../../source/row_neon64.cc:1196:6: error: invalid operand for instruction
    "mov        v5.8b, v1.8b                   \n"  // mov b
     ^
<inline asm>:7:12: note: instantiated into assembly here
mov        v5.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1463:6: error: invalid operand for instruction
    "mov        v2.8b, v1.8b                   \n"
     ^
<inline asm>:5:12: note: instantiated into assembly here
mov        v2.8b, v1.8b                   
           ^
../../source/row_neon64.cc:1493:6: error: invalid operand for instruction
    "mov        v3.8b, v2.8b                   \n"
     ^
<inline asm>:5:12: note: instantiated into assembly here
mov        v3.8b, v2.8b                   
           ^
../../source/row_neon64.cc:1685:5: error: too few operands for instruction
    "movi       v20.8h, #56                    \n"  // UB / VR 0.875 / 2 coefficient
    ^
<inline asm>:1:2: note: instantiated into assembly here
        movi       v20.8h, #56                    
        ^
../../source/row_neon64.cc:1686:6: error: too few operands for instruction
    "movi       v21.8h, #37                    \n"  // UG -0.5781 / 2 coefficient
     ^
<inline asm>:2:1: note: instantiated into assembly here
movi       v21.8h, #37                    
^
../../source/row_neon64.cc:1687:6: error: too few operands for instruction
    "movi       v22.8h, #19                    \n"  // UR -0.2969 / 2 coefficient
     ^
<inline asm>:3:1: note: instantiated into assembly here
movi       v22.8h, #19                    
^
../../source/row_neon64.cc:1688:6: error: too few operands for instruction
    "movi       v23.8h, #9                     \n"  // VB -0.1406 / 2 coefficient
     ^
<inline asm>:4:1: note: instantiated into assembly here
movi       v23.8h, #9                     
^
../../source/row_neon64.cc:1689:6: error: too few operands for instruction
    "movi       v24.8h, #47                    \n"  // VG -0.7344 / 2 coefficient
     ^
<inline asm>:5:1: note: instantiated into assembly here
movi       v24.8h, #47                    
^
../../source/row_neon64.cc:1735:5: error: too few operands for instruction
    "movi       v20.8h, #56                    \n"  // UB / VR 0.875 / 2 coefficient
    ^
<inline asm>:1:2: note: instantiated into assembly here
        movi       v20.8h, #56                    
        ^
../../source/row_neon64.cc:1736:6: error: too few operands for instruction
    "movi       v21.8h, #37                    \n"  // UG -0.5781 / 2 coefficient
     ^
<inline asm>:2:1: note: instantiated into assembly here
movi       v21.8h, #37                    
^
../../source/row_neon64.cc:1737:6: error: too few operands for instruction
    "movi       v22.8h, #19                    \n"  // UR -0.2969 / 2 coefficient
     ^
<inline asm>:3:1: note: instantiated into assembly here
movi       v22.8h, #19                    
^
../../source/row_neon64.cc:1738:6: error: too few operands for instruction
    "movi       v23.8h, #9                     \n"  // VB -0.1406 / 2 coefficient
     ^
<inline asm>:4:1: note: instantiated into assembly here
movi       v23.8h, #9                     
^
../../source/row_neon64.cc:1739:6: error: too few operands for instruction
    "movi       v24.8h, #47                    \n"  // VG -0.7344 / 2 coefficient
     ^
<inline asm>:5:1: note: instantiated into assembly here
movi       v24.8h, #47                    
^
../../source/row_neon64.cc:2918:6: error: invalid operand for instruction
    "mov        v1.8b, v0.8b                   \n"  // G
     ^
<inline asm>:13:12: note: instantiated into assembly here
mov        v1.8b, v0.8b                   
           ^
../../source/row_neon64.cc:2919:6: error: invalid operand for instruction
    "mov        v2.8b, v0.8b                   \n"  // R
     ^
<inline asm>:14:12: note: instantiated into assembly here
mov        v2.8b, v0.8b                   
           ^
../../source/row_neon64.cc:3161:6: error: invalid operand for instruction
    "mov        v1.8b, v0.8b                   \n"
     ^
<inline asm>:10:12: note: instantiated into assembly here
mov        v1.8b, v0.8b                   
           ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
[30/295] OBJC 
obj.host/testing/iossim/third_party/class-dump/src/class-dump.CDClassDump.o
ninja: build stopped: subcommand failed.

Original comment by fbarch...@chromium.org on 22 Sep 2014 at 11:02

GoogleCodeExporter commented 9 years ago
updated chromium deps but does not change ios behavior.  A verbose build shows 
xcode command line is used

ninja -j7 -v -C out_ios/Debug-iphoneos libyuv_unittest

bash-3.2$ c++ --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

Original comment by fbarch...@chromium.org on 23 Sep 2014 at 8:25

GoogleCodeExporter commented 9 years ago
xcode 6.0.1 uses a newer version:

$ c++ --version
Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

But the build is broken for xcode 6

Original comment by fbarch...@chromium.org on 24 Sep 2014 at 3:16

GoogleCodeExporter commented 9 years ago
The problem seems to be with the xcode as it has problems with proper AArch64 
assembly code. For example, ARM ARM, in Section C.1.2.4, says range syntax for 
load/store is valid. However xcode has problems with ld1 {v0.8b-v3.8b} syntax. 
From what I can see, the issue is not with gcc or clang as such.

Original comment by ashok.b...@gmail.com on 24 Sep 2014 at 2:37

GoogleCodeExporter commented 9 years ago
This is the build error with updated xcode 6

ninja: error: 
'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/D
eveloper/Library/PrivateFrameworks/DVTiPhoneSimulatorRemoteClient.framework/Vers
ions/Current/DVTiPhoneSimulatorRemoteClient', needed by 
'obj.host/chromium/src/testing/iossim/iossim.gen/iossim/DVTiPhoneSimulatorRemote
Client.h', missing and no known rule to make it
bash

Original comment by fbarch...@google.com on 26 Sep 2014 at 11:40

GoogleCodeExporter commented 9 years ago
Other changes needed to work with xcode
Instead of mov  v0.8b, v1.8b, Use orr v0.8b, v1.8b, v1.8b  
Instead of movi v1.8h, #10    Use movi v1.8h, #10, LSL #0
No change required when loading constant to .8b or .16b using movi

Original comment by ashok.b...@gmail.com on 1 Oct 2014 at 6:33

GoogleCodeExporter commented 9 years ago
Hi Frank,
Any update on this issue? Did my previous patch fix some/all of the issues?

Original comment by ashok.b...@gmail.com on 8 Oct 2014 at 12:47

GoogleCodeExporter commented 9 years ago
xcode 5.1.1 appears to build with warnings:

bash-3.2$  ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
ninja: Entering directory `out_ios/Debug-iphoneos'
[92/294] ACTION(host) Generating DVTiPhoneSimulatorRemoteClient.h
2014-10-13 13:28:08.636 class-dump[27217:507] Unknown load command: 0x00000024
2014-10-13 13:28:08.639 class-dump[27217:507] Unknown load command: 0x0000002a
2014-10-13 13:28:08.639 class-dump[27217:507] Unknown load command: 0x00000026
2014-10-13 13:28:08.640 class-dump[27217:507] Unknown load command: 0x00000029
2014-10-13 13:28:08.640 class-dump[27217:507] Unknown load command: 0x0000002b
[105/294] CXX obj/source/libyuv_neon.rotate_neon64.arm64.o
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
      "+r"(width)                                 // %3
           ^
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:240:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
../../source/rotate_neon64.cc:525:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
      "+r"(width)                                 // %4
           ^
../../source/rotate_neon64.cc:525:12: warning: value size does not match 
register size specified by the constraint and modifier [-Wasm-operand-widths]
19 warnings generated.
[130/294] LIBTOOL-STATIC libyuv_neon.a, POSTBUILDS
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv_neon.armv7.a(libyuv_neon.compare_neon64.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv_neon.armv7.a(libyuv_neon.rotate_neon64.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv_neon.armv7.a(libyuv_neon.row_neon64.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv_neon.armv7.a(libyuv_neon.scale_neon64.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv_neon.armv7s.a(libyuv_neon.compare_neon64.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv_neon.armv7s.a(libyuv_neon.rotate_neon64.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv_neon.armv7s.a(libyuv_neon.row_neon64.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv_neon.armv7s.a(libyuv_neon.scale_neon64.armv7s.o) has no symbols
[211/294] LIBTOOL-STATIC libyuv.a, POSTBUILDS
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.compare_posix.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.compare_win.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.convert_jpeg.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.mjpeg_decoder.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.rotate_mips.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.row_mips.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.row_posix.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.row_win.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.scale_mips.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.scale_posix.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7 file: 
arch/libyuv.armv7.a(libyuv.scale_win.armv7.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.compare_posix.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.compare_win.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.convert_jpeg.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.mjpeg_decoder.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.rotate_mips.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.row_mips.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.row_posix.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.row_win.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.scale_mips.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.scale_posix.armv7s.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/u
sr/bin/libtool: for architecture: armv7s file: 
arch/libyuv.armv7s.a(libyuv.scale_win.armv7s.o) has no symbols
[294/294] STAMP libyuv_unittest.app

Original comment by fbarch...@google.com on 13 Oct 2014 at 9:10

GoogleCodeExporter commented 9 years ago
Fixed in r1120
Builds with xcode 5.1.1 on ios.

Original comment by fbarch...@google.com on 14 Oct 2014 at 12:27

GoogleCodeExporter commented 9 years ago
Apple may require 64 bit shortly
http://www.engadget.com/2014/10/20/apple-to-require-64-bit-ios-apps/

Original comment by fbarch...@google.com on 21 Oct 2014 at 3:32