blob: 344ba691b9a4cc677488297c73f17cf2baaba7c1 [file] [log] [blame]
pauljensen420d1a12016-08-19 14:33:101#!/usr/bin/python
2# Copyright 2016 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""check_no_neon.py - Check modules do not contain ARM Neon instructions."""
7
8import argparse
9import os
10import sys
11
agrievee2173d02016-09-15 01:16:2012REPOSITORY_ROOT = os.path.abspath(os.path.join(
13 os.path.dirname(__file__), '..', '..', '..'))
14
15sys.path.append(os.path.join(REPOSITORY_ROOT, 'build/android/gyp/util'))
16import build_utils
17
pauljensen420d1a12016-08-19 14:33:1018
19def main(args):
20 parser = argparse.ArgumentParser(
21 description='Check modules do not contain ARM Neon instructions.')
22 parser.add_argument('objdump', metavar='path/to/ARM/objdump')
23 parser.add_argument('objects', metavar='files/to/check/*.o')
agrievee2173d02016-09-15 01:16:2024 parser.add_argument('--stamp', help='Path to touch on success.')
pauljensen420d1a12016-08-19 14:33:1025 opts = parser.parse_args(args)
agrievee2173d02016-09-15 01:16:2026 ret = os.system(opts.objdump + ' -d --no-show-raw-insn ' +
pauljensen420d1a12016-08-19 14:33:1027 opts.objects + ' | grep -q "vld[1-9]\\|vst[1-9]"')
28
agrievee2173d02016-09-15 01:16:2029 # Non-zero exit code means no neon.
30 if ret and opts.stamp:
31 build_utils.Touch(opts.stamp)
32 return ret
33
pauljensen420d1a12016-08-19 14:33:1034
35if __name__ == '__main__':
36 sys.exit(0 if main(sys.argv[1:]) != 0 else -1)