mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-28 03:42:35 +00:00 
			
		
		
		
	 76be848ec3
			
		
	
	
		76be848ec3
		
			
		
	
	
	
	
		
			
			Segue is an optimization technology which uses x86 segment register to store the WebAssembly linear memory base address, so as to remove most of the cost of SFI (Software-based Fault Isolation) base addition and free up a general purpose register, by this way it may: - Improve the performance of JIT/AOT - Reduce the footprint of JIT/AOT, the JIT/AOT code generated is smaller - Reduce the compilation time of JIT/AOT This PR uses the x86-64 GS segment register to apply the optimization, currently it supports linux and linux-sgx platforms on x86-64 target. By default it is disabled, developer can use the option below to enable it for wamrc and iwasm(with LLVM JIT enabled): ```bash wamrc --enable-segue=[<flags>] -o output_file wasm_file iwasm --enable-segue=[<flags>] wasm_file [args...] ``` `flags` can be: i32.load, i64.load, f32.load, f64.load, v128.load, i32.store, i64.store, f32.store, f64.store, v128.store Use comma to separate them, e.g. `--enable-segue=i32.load,i64.store`, and `--enable-segue` means all flags are added. Acknowledgement: Many thanks to Intel Labs, UC San Diego and UT Austin teams for introducing this technology and the great support and guidance! Signed-off-by: Wenyong Huang <wenyong.huang@intel.com> Co-authored-by: Vahldiek-oberwagner, Anjo Lucas <anjo.lucas.vahldiek-oberwagner@intel.com>
		
			
				
	
	
		
			25 lines
		
	
	
		
			808 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			808 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Copyright (C) 2019 Intel Corporation.  All rights reserved.
 | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| 
 | |
| PLATFORM=$(uname -s | tr A-Z a-z)
 | |
| 
 | |
| WAMRC_CMD=$PWD/../../../wamr-compiler/build/wamrc
 | |
| 
 | |
| echo "===> compile dhrystone src to dhrystone_native"
 | |
| gcc -O3 -o dhrystone_native src/dhry_1.c src/dhry_2.c -I include
 | |
| 
 | |
| echo "===> compile dhrystone src to dhrystone.wasm"
 | |
| /opt/wasi-sdk/bin/clang -O3 \
 | |
|     -o dhrystone.wasm src/dhry_1.c src/dhry_2.c -I include \
 | |
|     -Wl,--export=__heap_base -Wl,--export=__data_end
 | |
| 
 | |
| echo "===> compile dhrystone.wasm to dhrystone.aot"
 | |
| ${WAMRC_CMD} -o dhrystone.aot dhrystone.wasm
 | |
| 
 | |
| if [[ ${PLATFORM} == "linux" ]]; then
 | |
|     echo "===> compile dhrystone.wasm to dhrystone_segue.aot"
 | |
|     ${WAMRC_CMD} --enable-segue -o dhrystone_segue.aot dhrystone.wasm
 | |
| fi
 |