Commit e5b58fbe by Jim Stichnoth

Subzero: Changes needed for LLVM 3.7 integration.

1. Change Makefile.standalone from 3.6 to 3.7. 2. Update to new load instruction .ll syntax. This includes changing InstLoad::dump() to match. BUG= none R=jvoung@chromium.org Review URL: https://codereview.chromium.org/1161543005
parent 0769299d
...@@ -31,7 +31,7 @@ PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e \ ...@@ -31,7 +31,7 @@ PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e \
PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin) PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin)
# Hack to auto-detect autoconf versus cmake build of LLVM. If the LLVM tools # Hack to auto-detect autoconf versus cmake build of LLVM. If the LLVM tools
# were dynamically linked with something like libLLVM-3.6svn.so, it is an # were dynamically linked with something like libLLVM-3.7svn.so, it is an
# autoconf build, otherwise it is a cmake build. AUTOCONF is set to 0 for # autoconf build, otherwise it is a cmake build. AUTOCONF is set to 0 for
# cmake, nonzero for autoconf. # cmake, nonzero for autoconf.
AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-) AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-)
...@@ -133,7 +133,7 @@ ifeq ($(AUTOCONF), 0) ...@@ -133,7 +133,7 @@ ifeq ($(AUTOCONF), 0)
CLANG_FORMAT_PATH ?= $(PNACL_BIN_PATH) CLANG_FORMAT_PATH ?= $(PNACL_BIN_PATH)
else else
# LLVM autoconf build # LLVM autoconf build
LLVM_LIBS := -lLLVM-3.6svn LLVM_LIBS := -lLLVM-3.7svn
GTEST_LIB_PATH ?= -L../../out/llvm_x86_64_linux_work/Release+Asserts/lib GTEST_LIB_PATH ?= -L../../out/llvm_x86_64_linux_work/Release+Asserts/lib
CLANG_FORMAT_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin CLANG_FORMAT_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin
endif endif
......
...@@ -699,7 +699,7 @@ void InstLoad::dump(const Cfg *Func) const { ...@@ -699,7 +699,7 @@ void InstLoad::dump(const Cfg *Func) const {
Ostream &Str = Func->getContext()->getStrDump(); Ostream &Str = Func->getContext()->getStrDump();
dumpDest(Func); dumpDest(Func);
Type Ty = getDest()->getType(); Type Ty = getDest()->getType();
Str << " = load " << Ty << "* "; Str << " = load " << Ty << ", " << Ty << "* ";
dumpSources(Func); dumpSources(Func);
Str << ", align " << typeAlignInBytes(Ty); Str << ", align " << typeAlignInBytes(Ty);
} }
......
...@@ -115,9 +115,9 @@ define <16 x i8> @load_v16xI8(i32 %addr, i32 %addr2, i32 %addr3) { ...@@ -115,9 +115,9 @@ define <16 x i8> @load_v16xI8(i32 %addr, i32 %addr2, i32 %addr3) {
%addr_v16xI8 = inttoptr i32 %addr to <16 x i8>* %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
%addr2_v16xI8 = inttoptr i32 %addr2 to <16 x i8>* %addr2_v16xI8 = inttoptr i32 %addr2 to <16 x i8>*
%addr3_v16xI8 = inttoptr i32 %addr3 to <16 x i8>* %addr3_v16xI8 = inttoptr i32 %addr3 to <16 x i8>*
%res1 = load <16 x i8>* %addr2_v16xI8, align 1 %res1 = load <16 x i8>, <16 x i8>* %addr2_v16xI8, align 1
%res2 = load <16 x i8>* %addr_v16xI8, align 1 %res2 = load <16 x i8>, <16 x i8>* %addr_v16xI8, align 1
%res3 = load <16 x i8>* %addr3_v16xI8, align 1 %res3 = load <16 x i8>, <16 x i8>* %addr3_v16xI8, align 1
%res12 = add <16 x i8> %res1, %res2 %res12 = add <16 x i8> %res1, %res2
%res123 = add <16 x i8> %res12, %res3 %res123 = add <16 x i8> %res12, %res3
ret <16 x i8> %res123 ret <16 x i8> %res123
...@@ -135,7 +135,7 @@ entry: ...@@ -135,7 +135,7 @@ entry:
%__1 = ptrtoint i8* %ptr to i32 %__1 = ptrtoint i8* %ptr to i32
%x = add i32 %__1, %__1 %x = add i32 %__1, %__1
%__3 = inttoptr i32 %x to i32* %__3 = inttoptr i32 %x to i32*
%v = load i32* %__3, align 1 %v = load i32, i32* %__3, align 1
%v_add = add i32 %v, 1 %v_add = add i32 %v, 1
%ptr2 = call i8* @llvm.nacl.read.tp() %ptr2 = call i8* @llvm.nacl.read.tp()
......
...@@ -1291,7 +1291,7 @@ entry: ...@@ -1291,7 +1291,7 @@ entry:
define internal i64 @load64(i32 %a) { define internal i64 @load64(i32 %a) {
entry: entry:
%__1 = inttoptr i32 %a to i64* %__1 = inttoptr i32 %a to i64*
%v0 = load i64* %__1, align 1 %v0 = load i64, i64* %__1, align 1
ret i64 %v0 ret i64 %v0
} }
; CHECK-LABEL: load64 ; CHECK-LABEL: load64
......
...@@ -253,7 +253,7 @@ define internal i32 @icmp8BitMem(i32 %a, i32 %b_iptr) { ...@@ -253,7 +253,7 @@ define internal i32 @icmp8BitMem(i32 %a, i32 %b_iptr) {
entry: entry:
%a_8 = trunc i32 %a to i8 %a_8 = trunc i32 %a to i8
%bptr = inttoptr i32 %b_iptr to i8* %bptr = inttoptr i32 %b_iptr to i8*
%b_8 = load i8* %bptr, align 1 %b_8 = load i8, i8* %bptr, align 1
%icmp = icmp ne i8 %b_8, %a_8 %icmp = icmp ne i8 %b_8, %a_8
%ret = zext i1 %icmp to i32 %ret = zext i1 %icmp to i32
ret i32 %ret ret i32 %ret
...@@ -265,7 +265,7 @@ define internal i32 @icmp8BitMemSwapped(i32 %a, i32 %b_iptr) { ...@@ -265,7 +265,7 @@ define internal i32 @icmp8BitMemSwapped(i32 %a, i32 %b_iptr) {
entry: entry:
%a_8 = trunc i32 %a to i8 %a_8 = trunc i32 %a to i8
%bptr = inttoptr i32 %b_iptr to i8* %bptr = inttoptr i32 %b_iptr to i8*
%b_8 = load i8* %bptr, align 1 %b_8 = load i8, i8* %bptr, align 1
%icmp = icmp ne i8 %a_8, %b_8 %icmp = icmp ne i8 %a_8, %b_8
%ret = zext i1 %icmp to i32 %ret = zext i1 %icmp to i32
ret i32 %ret ret i32 %ret
...@@ -334,7 +334,7 @@ target: ...@@ -334,7 +334,7 @@ target:
define i32 @load_i8(i32 %addr_arg) { define i32 @load_i8(i32 %addr_arg) {
entry: entry:
%addr = inttoptr i32 %addr_arg to i8* %addr = inttoptr i32 %addr_arg to i8*
%ret = load i8* %addr, align 1 %ret = load i8, i8* %addr, align 1
%ret2 = sub i8 %ret, 0 %ret2 = sub i8 %ret, 0
%ret_ext = zext i8 %ret2 to i32 %ret_ext = zext i8 %ret2 to i32
ret i32 %ret_ext ret i32 %ret_ext
...@@ -345,7 +345,7 @@ entry: ...@@ -345,7 +345,7 @@ entry:
define i32 @load_i8_global(i32 %addr_arg) { define i32 @load_i8_global(i32 %addr_arg) {
entry: entry:
%addr = bitcast [1 x i8]* @global8 to i8* %addr = bitcast [1 x i8]* @global8 to i8*
%ret = load i8* %addr, align 1 %ret = load i8, i8* %addr, align 1
%ret2 = sub i8 %ret, 0 %ret2 = sub i8 %ret, 0
%ret_ext = zext i8 %ret2 to i32 %ret_ext = zext i8 %ret2 to i32
ret i32 %ret_ext ret i32 %ret_ext
......
...@@ -15,7 +15,7 @@ define internal i32 @_Balloc(i32 %ptr, i32 %k) { ...@@ -15,7 +15,7 @@ define internal i32 @_Balloc(i32 %ptr, i32 %k) {
entry: entry:
%gep = add i32 %ptr, 76 %gep = add i32 %ptr, 76
%gep.asptr = inttoptr i32 %gep to i32* %gep.asptr = inttoptr i32 %gep to i32*
%0 = load i32* %gep.asptr, align 1 %0 = load i32, i32* %gep.asptr, align 1
%cmp = icmp eq i32 %0, 0 %cmp = icmp eq i32 %0, 0
br i1 %cmp, label %if.then, label %if.end5 br i1 %cmp, label %if.then, label %if.end5
...@@ -31,11 +31,11 @@ if.end5: ; preds = %if.then, %entry ...@@ -31,11 +31,11 @@ if.end5: ; preds = %if.then, %entry
%gep_array = mul i32 %k, 4 %gep_array = mul i32 %k, 4
%gep2 = add i32 %1, %gep_array %gep2 = add i32 %1, %gep_array
%gep2.asptr = inttoptr i32 %gep2 to i32* %gep2.asptr = inttoptr i32 %gep2 to i32*
%2 = load i32* %gep2.asptr, align 1 %2 = load i32, i32* %gep2.asptr, align 1
; The above load instruction is a good target for address mode ; The above load instruction is a good target for address mode
; optimization. Correct analysis would lead to dump output like: ; optimization. Correct analysis would lead to dump output like:
; Starting computeAddressOpt for instruction: ; Starting computeAddressOpt for instruction:
; [ 15] %__13 = load i32* %gep2.asptr, align 1 ; [ 15] %__13 = load i32, i32* %gep2.asptr, align 1
; Instruction: [ 14] %gep2.asptr = i32 %gep2 ; Instruction: [ 14] %gep2.asptr = i32 %gep2
; results in Base=%gep2, Index=<null>, Shift=0, Offset=0 ; results in Base=%gep2, Index=<null>, Shift=0, Offset=0
; Instruction: [ 13] %gep2 = add i32 %__9, %gep_array ; Instruction: [ 13] %gep2 = add i32 %__9, %gep_array
...@@ -47,7 +47,7 @@ if.end5: ; preds = %if.then, %entry ...@@ -47,7 +47,7 @@ if.end5: ; preds = %if.then, %entry
; ;
; Incorrect, overly-aggressive analysis would lead to output like: ; Incorrect, overly-aggressive analysis would lead to output like:
; Starting computeAddressOpt for instruction: ; Starting computeAddressOpt for instruction:
; [ 15] %__13 = load i32* %gep2.asptr, align 1 ; [ 15] %__13 = load i32, i32* %gep2.asptr, align 1
; Instruction: [ 14] %gep2.asptr = i32 %gep2 ; Instruction: [ 14] %gep2.asptr = i32 %gep2
; results in Base=%gep2, Index=<null>, Shift=0, Offset=0 ; results in Base=%gep2, Index=<null>, Shift=0, Offset=0
; Instruction: [ 13] %gep2 = add i32 %__9, %gep_array ; Instruction: [ 13] %gep2 = add i32 %__9, %gep_array
......
...@@ -10,7 +10,7 @@ entry: ...@@ -10,7 +10,7 @@ entry:
%arg.int = ptrtoint float* %arg to i32 %arg.int = ptrtoint float* %arg to i32
%addr.int = add i32 %arg.int, 200000 %addr.int = add i32 %arg.int, 200000
%addr.ptr = inttoptr i32 %addr.int to float* %addr.ptr = inttoptr i32 %addr.int to float*
%addr.load = load float* %addr.ptr, align 4 %addr.load = load float, float* %addr.ptr, align 4
ret float %addr.load ret float %addr.load
; CHECK-LABEL: load_arg_plus_200000 ; CHECK-LABEL: load_arg_plus_200000
; CHECK: movss xmm0,DWORD PTR [eax+0x30d40] ; CHECK: movss xmm0,DWORD PTR [eax+0x30d40]
...@@ -21,7 +21,7 @@ entry: ...@@ -21,7 +21,7 @@ entry:
%arg.int = ptrtoint float* %arg to i32 %arg.int = ptrtoint float* %arg to i32
%addr.int = add i32 200000, %arg.int %addr.int = add i32 200000, %arg.int
%addr.ptr = inttoptr i32 %addr.int to float* %addr.ptr = inttoptr i32 %addr.int to float*
%addr.load = load float* %addr.ptr, align 4 %addr.load = load float, float* %addr.ptr, align 4
ret float %addr.load ret float %addr.load
; CHECK-LABEL: load_200000_plus_arg ; CHECK-LABEL: load_200000_plus_arg
; CHECK: movss xmm0,DWORD PTR [eax+0x30d40] ; CHECK: movss xmm0,DWORD PTR [eax+0x30d40]
...@@ -32,7 +32,7 @@ entry: ...@@ -32,7 +32,7 @@ entry:
%arg.int = ptrtoint float* %arg to i32 %arg.int = ptrtoint float* %arg to i32
%addr.int = sub i32 %arg.int, 200000 %addr.int = sub i32 %arg.int, 200000
%addr.ptr = inttoptr i32 %addr.int to float* %addr.ptr = inttoptr i32 %addr.int to float*
%addr.load = load float* %addr.ptr, align 4 %addr.load = load float, float* %addr.ptr, align 4
ret float %addr.load ret float %addr.load
; CHECK-LABEL: load_arg_minus_200000 ; CHECK-LABEL: load_arg_minus_200000
; CHECK: movss xmm0,DWORD PTR [eax-0x30d40] ; CHECK: movss xmm0,DWORD PTR [eax-0x30d40]
...@@ -43,7 +43,7 @@ entry: ...@@ -43,7 +43,7 @@ entry:
%arg.int = ptrtoint float* %arg to i32 %arg.int = ptrtoint float* %arg to i32
%addr.int = sub i32 200000, %arg.int %addr.int = sub i32 200000, %arg.int
%addr.ptr = inttoptr i32 %addr.int to float* %addr.ptr = inttoptr i32 %addr.int to float*
%addr.load = load float* %addr.ptr, align 4 %addr.load = load float, float* %addr.ptr, align 4
ret float %addr.load ret float %addr.load
; CHECK-LABEL: load_200000_minus_arg ; CHECK-LABEL: load_200000_minus_arg
; CHECK: movss xmm0,DWORD PTR [e{{..}}] ; CHECK: movss xmm0,DWORD PTR [e{{..}}]
...@@ -53,7 +53,7 @@ define <8 x i16> @load_mul_v8i16_mem(<8 x i16> %arg0, i32 %arg1_iptr) { ...@@ -53,7 +53,7 @@ define <8 x i16> @load_mul_v8i16_mem(<8 x i16> %arg0, i32 %arg1_iptr) {
entry: entry:
%addr_sub = sub i32 %arg1_iptr, 200000 %addr_sub = sub i32 %arg1_iptr, 200000
%addr_ptr = inttoptr i32 %addr_sub to <8 x i16>* %addr_ptr = inttoptr i32 %addr_sub to <8 x i16>*
%arg1 = load <8 x i16>* %addr_ptr, align 2 %arg1 = load <8 x i16>, <8 x i16>* %addr_ptr, align 2
%res_vec = mul <8 x i16> %arg0, %arg1 %res_vec = mul <8 x i16> %arg0, %arg1
ret <8 x i16> %res_vec ret <8 x i16> %res_vec
; Address mode optimization is generally unsafe for SSE vector instructions. ; Address mode optimization is generally unsafe for SSE vector instructions.
...@@ -65,7 +65,7 @@ define <4 x i32> @load_mul_v4i32_mem(<4 x i32> %arg0, i32 %arg1_iptr) { ...@@ -65,7 +65,7 @@ define <4 x i32> @load_mul_v4i32_mem(<4 x i32> %arg0, i32 %arg1_iptr) {
entry: entry:
%addr_sub = sub i32 %arg1_iptr, 200000 %addr_sub = sub i32 %arg1_iptr, 200000
%addr_ptr = inttoptr i32 %addr_sub to <4 x i32>* %addr_ptr = inttoptr i32 %addr_sub to <4 x i32>*
%arg1 = load <4 x i32>* %addr_ptr, align 4 %arg1 = load <4 x i32>, <4 x i32>* %addr_ptr, align 4
%res = mul <4 x i32> %arg0, %arg1 %res = mul <4 x i32> %arg0, %arg1
ret <4 x i32> %res ret <4 x i32> %res
; Address mode optimization is generally unsafe for SSE vector instructions. ; Address mode optimization is generally unsafe for SSE vector instructions.
...@@ -83,7 +83,7 @@ entry: ...@@ -83,7 +83,7 @@ entry:
%addr1.int = add i32 12, %arg.int %addr1.int = add i32 12, %arg.int
%addr2.int = sub i32 %addr1.int, 4 %addr2.int = sub i32 %addr1.int, 4
%addr2.ptr = inttoptr i32 %addr2.int to float* %addr2.ptr = inttoptr i32 %addr2.int to float*
%addr2.load = load float* %addr2.ptr, align 4 %addr2.load = load float, float* %addr2.ptr, align 4
ret float %addr2.load ret float %addr2.load
; CHECK-LABEL: address_mode_opt_chaining ; CHECK-LABEL: address_mode_opt_chaining
; CHECK: movss xmm0,DWORD PTR [eax+0x8] ; CHECK: movss xmm0,DWORD PTR [eax+0x8]
...@@ -95,7 +95,7 @@ entry: ...@@ -95,7 +95,7 @@ entry:
%addr1.int = add i32 2147483640, %arg.int %addr1.int = add i32 2147483640, %arg.int
%addr2.int = add i32 %addr1.int, 2147483643 %addr2.int = add i32 %addr1.int, 2147483643
%addr2.ptr = inttoptr i32 %addr2.int to float* %addr2.ptr = inttoptr i32 %addr2.int to float*
%addr2.load = load float* %addr2.ptr, align 4 %addr2.load = load float, float* %addr2.ptr, align 4
ret float %addr2.load ret float %addr2.load
; CHECK-LABEL: address_mode_opt_chaining_overflow ; CHECK-LABEL: address_mode_opt_chaining_overflow
; CHECK: 0x7ffffff8 ; CHECK: 0x7ffffff8
...@@ -108,7 +108,7 @@ entry: ...@@ -108,7 +108,7 @@ entry:
%addr1.int = sub i32 %arg.int, 2147483640 %addr1.int = sub i32 %arg.int, 2147483640
%addr2.int = sub i32 %addr1.int, 2147483643 %addr2.int = sub i32 %addr1.int, 2147483643
%addr2.ptr = inttoptr i32 %addr2.int to float* %addr2.ptr = inttoptr i32 %addr2.int to float*
%addr2.load = load float* %addr2.ptr, align 4 %addr2.load = load float, float* %addr2.ptr, align 4
ret float %addr2.load ret float %addr2.load
; CHECK-LABEL: address_mode_opt_chaining_overflow_sub ; CHECK-LABEL: address_mode_opt_chaining_overflow_sub
; CHECK: 0x7ffffff8 ; CHECK: 0x7ffffff8
...@@ -121,7 +121,7 @@ entry: ...@@ -121,7 +121,7 @@ entry:
%addr1.int = sub i32 %arg.int, 2147483640 %addr1.int = sub i32 %arg.int, 2147483640
%addr2.int = add i32 %addr1.int, 2147483643 %addr2.int = add i32 %addr1.int, 2147483643
%addr2.ptr = inttoptr i32 %addr2.int to float* %addr2.ptr = inttoptr i32 %addr2.int to float*
%addr2.load = load float* %addr2.ptr, align 4 %addr2.load = load float, float* %addr2.ptr, align 4
ret float %addr2.load ret float %addr2.load
; CHECK-LABEL: address_mode_opt_chaining_no_overflow ; CHECK-LABEL: address_mode_opt_chaining_no_overflow
; CHECK: movss xmm0,DWORD PTR [{{.*}}+0x3] ; CHECK: movss xmm0,DWORD PTR [{{.*}}+0x3]
...@@ -132,7 +132,7 @@ entry: ...@@ -132,7 +132,7 @@ entry:
%arg.int = ptrtoint float* %arg to i32 %arg.int = ptrtoint float* %arg to i32
%addr1.int = add i32 %arg.int, 2147483648 %addr1.int = add i32 %arg.int, 2147483648
%addr1.ptr = inttoptr i32 %addr1.int to float* %addr1.ptr = inttoptr i32 %addr1.int to float*
%addr1.load = load float* %addr1.ptr, align 4 %addr1.load = load float, float* %addr1.ptr, align 4
ret float %addr1.load ret float %addr1.load
; CHECK-LABEL: address_mode_opt_add_pos_min_int ; CHECK-LABEL: address_mode_opt_add_pos_min_int
; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000] ; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000]
...@@ -143,7 +143,7 @@ entry: ...@@ -143,7 +143,7 @@ entry:
%arg.int = ptrtoint float* %arg to i32 %arg.int = ptrtoint float* %arg to i32
%addr1.int = sub i32 %arg.int, 2147483648 %addr1.int = sub i32 %arg.int, 2147483648
%addr1.ptr = inttoptr i32 %addr1.int to float* %addr1.ptr = inttoptr i32 %addr1.int to float*
%addr1.load = load float* %addr1.ptr, align 4 %addr1.load = load float, float* %addr1.ptr, align 4
ret float %addr1.load ret float %addr1.load
; CHECK-LABEL: address_mode_opt_sub_min_int ; CHECK-LABEL: address_mode_opt_sub_min_int
; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000] ; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000]
......
...@@ -44,7 +44,7 @@ entry: ...@@ -44,7 +44,7 @@ entry:
define internal void @CallIndirectGlobal() { define internal void @CallIndirectGlobal() {
entry: entry:
%fp_ptr_i32 = bitcast [4 x i8]* @fp_v to i32* %fp_ptr_i32 = bitcast [4 x i8]* @fp_v to i32*
%fp_ptr = load i32* %fp_ptr_i32, align 1 %fp_ptr = load i32, i32* %fp_ptr_i32, align 1
%fp = inttoptr i32 %fp_ptr to void ()* %fp = inttoptr i32 %fp_ptr to void ()*
call void %fp() call void %fp()
call void %fp() call void %fp()
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
define void @from_int8() { define void @from_int8() {
entry: entry:
%__0 = bitcast [1 x i8]* @i8v to i8* %__0 = bitcast [1 x i8]* @i8v to i8*
%v0 = load i8* %__0, align 1 %v0 = load i8, i8* %__0, align 1
%v1 = sext i8 %v0 to i16 %v1 = sext i8 %v0 to i16
%__3 = bitcast [2 x i8]* @i16v to i16* %__3 = bitcast [2 x i8]* @i16v to i16*
store i16 %v1, i16* %__3, align 1 store i16 %v1, i16* %__3, align 1
...@@ -41,7 +41,7 @@ entry: ...@@ -41,7 +41,7 @@ entry:
define void @from_int16() { define void @from_int16() {
entry: entry:
%__0 = bitcast [2 x i8]* @i16v to i16* %__0 = bitcast [2 x i8]* @i16v to i16*
%v0 = load i16* %__0, align 1 %v0 = load i16, i16* %__0, align 1
%v1 = trunc i16 %v0 to i8 %v1 = trunc i16 %v0 to i8
%__3 = bitcast [1 x i8]* @i8v to i8* %__3 = bitcast [1 x i8]* @i8v to i8*
store i8 %v1, i8* %__3, align 1 store i8 %v1, i8* %__3, align 1
...@@ -65,7 +65,7 @@ entry: ...@@ -65,7 +65,7 @@ entry:
define void @from_int32() { define void @from_int32() {
entry: entry:
%__0 = bitcast [4 x i8]* @i32v to i32* %__0 = bitcast [4 x i8]* @i32v to i32*
%v0 = load i32* %__0, align 1 %v0 = load i32, i32* %__0, align 1
%v1 = trunc i32 %v0 to i8 %v1 = trunc i32 %v0 to i8
%__3 = bitcast [1 x i8]* @i8v to i8* %__3 = bitcast [1 x i8]* @i8v to i8*
store i8 %v1, i8* %__3, align 1 store i8 %v1, i8* %__3, align 1
...@@ -87,7 +87,7 @@ entry: ...@@ -87,7 +87,7 @@ entry:
define void @from_int64() { define void @from_int64() {
entry: entry:
%__0 = bitcast [8 x i8]* @i64v to i64* %__0 = bitcast [8 x i8]* @i64v to i64*
%v0 = load i64* %__0, align 1 %v0 = load i64, i64* %__0, align 1
%v1 = trunc i64 %v0 to i8 %v1 = trunc i64 %v0 to i8
%__3 = bitcast [1 x i8]* @i8v to i8* %__3 = bitcast [1 x i8]* @i8v to i8*
store i8 %v1, i8* %__3, align 1 store i8 %v1, i8* %__3, align 1
...@@ -109,7 +109,7 @@ entry: ...@@ -109,7 +109,7 @@ entry:
define void @from_uint8() { define void @from_uint8() {
entry: entry:
%__0 = bitcast [1 x i8]* @u8v to i8* %__0 = bitcast [1 x i8]* @u8v to i8*
%v0 = load i8* %__0, align 1 %v0 = load i8, i8* %__0, align 1
%v1 = zext i8 %v0 to i16 %v1 = zext i8 %v0 to i16
%__3 = bitcast [2 x i8]* @i16v to i16* %__3 = bitcast [2 x i8]* @i16v to i16*
store i16 %v1, i16* %__3, align 1 store i16 %v1, i16* %__3, align 1
...@@ -134,7 +134,7 @@ entry: ...@@ -134,7 +134,7 @@ entry:
define void @from_uint16() { define void @from_uint16() {
entry: entry:
%__0 = bitcast [2 x i8]* @u16v to i16* %__0 = bitcast [2 x i8]* @u16v to i16*
%v0 = load i16* %__0, align 1 %v0 = load i16, i16* %__0, align 1
%v1 = trunc i16 %v0 to i8 %v1 = trunc i16 %v0 to i8
%__3 = bitcast [1 x i8]* @i8v to i8* %__3 = bitcast [1 x i8]* @i8v to i8*
store i8 %v1, i8* %__3, align 1 store i8 %v1, i8* %__3, align 1
...@@ -158,7 +158,7 @@ entry: ...@@ -158,7 +158,7 @@ entry:
define void @from_uint32() { define void @from_uint32() {
entry: entry:
%__0 = bitcast [4 x i8]* @u32v to i32* %__0 = bitcast [4 x i8]* @u32v to i32*
%v0 = load i32* %__0, align 1 %v0 = load i32, i32* %__0, align 1
%v1 = trunc i32 %v0 to i8 %v1 = trunc i32 %v0 to i8
%__3 = bitcast [1 x i8]* @i8v to i8* %__3 = bitcast [1 x i8]* @i8v to i8*
store i8 %v1, i8* %__3, align 1 store i8 %v1, i8* %__3, align 1
...@@ -180,7 +180,7 @@ entry: ...@@ -180,7 +180,7 @@ entry:
define void @from_uint64() { define void @from_uint64() {
entry: entry:
%__0 = bitcast [8 x i8]* @u64v to i64* %__0 = bitcast [8 x i8]* @u64v to i64*
%v0 = load i64* %__0, align 1 %v0 = load i64, i64* %__0, align 1
%v1 = trunc i64 %v0 to i8 %v1 = trunc i64 %v0 to i8
%__3 = bitcast [1 x i8]* @i8v to i8* %__3 = bitcast [1 x i8]* @i8v to i8*
store i8 %v1, i8* %__3, align 1 store i8 %v1, i8* %__3, align 1
......
...@@ -1103,7 +1103,7 @@ entry: ...@@ -1103,7 +1103,7 @@ entry:
define internal float @loadFloat(i32 %a) { define internal float @loadFloat(i32 %a) {
entry: entry:
%__1 = inttoptr i32 %a to float* %__1 = inttoptr i32 %a to float*
%v0 = load float* %__1, align 4 %v0 = load float, float* %__1, align 4
ret float %v0 ret float %v0
} }
; CHECK-LABEL: loadFloat ; CHECK-LABEL: loadFloat
...@@ -1113,7 +1113,7 @@ entry: ...@@ -1113,7 +1113,7 @@ entry:
define internal double @loadDouble(i32 %a) { define internal double @loadDouble(i32 %a) {
entry: entry:
%__1 = inttoptr i32 %a to double* %__1 = inttoptr i32 %a to double*
%v0 = load double* %__1, align 8 %v0 = load double, double* %__1, align 8
ret double %v0 ret double %v0
} }
; CHECK-LABEL: loadDouble ; CHECK-LABEL: loadDouble
......
...@@ -29,7 +29,7 @@ entry: ...@@ -29,7 +29,7 @@ entry:
define internal void @add_in_place() { define internal void @add_in_place() {
entry: entry:
%p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32* %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
%0 = load i32* %p_global_char.bc, align 1 %0 = load i32, i32* %p_global_char.bc, align 1
%expanded1 = ptrtoint [1 x i8]* @global_char to i32 %expanded1 = ptrtoint [1 x i8]* @global_char to i32
%gep = add i32 %0, %expanded1 %gep = add i32 %0, %expanded1
%p_global_char.bc3 = bitcast [4 x i8]* @p_global_char to i32* %p_global_char.bc3 = bitcast [4 x i8]* @p_global_char to i32*
...@@ -43,7 +43,7 @@ entry: ...@@ -43,7 +43,7 @@ entry:
define internal void @cmp_global_immediate() { define internal void @cmp_global_immediate() {
entry: entry:
%p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32* %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
%0 = load i32* %p_global_char.bc, align 1 %0 = load i32, i32* %p_global_char.bc, align 1
%expanded1 = ptrtoint [1 x i8]* @global_char to i32 %expanded1 = ptrtoint [1 x i8]* @global_char to i32
%cmp = icmp eq i32 %0, %expanded1 %cmp = icmp eq i32 %0, %expanded1
br i1 %cmp, label %if.then, label %if.end br i1 %cmp, label %if.then, label %if.end
......
...@@ -7,47 +7,47 @@ ...@@ -7,47 +7,47 @@
define void @load_i64(i32 %addr_arg) { define void @load_i64(i32 %addr_arg) {
entry: entry:
%__1 = inttoptr i32 %addr_arg to i64* %__1 = inttoptr i32 %addr_arg to i64*
%iv = load i64* %__1, align 1 %iv = load i64, i64* %__1, align 1
ret void ret void
; CHECK: Initial CFG ; CHECK: Initial CFG
; CHECK: entry: ; CHECK: entry:
; CHECK-NEXT: %iv = load i64* %addr_arg, align 1 ; CHECK-NEXT: %iv = load i64, i64* %addr_arg, align 1
; CHECK-NEXT: ret void ; CHECK-NEXT: ret void
} }
define void @load_i32(i32 %addr_arg) { define void @load_i32(i32 %addr_arg) {
entry: entry:
%__1 = inttoptr i32 %addr_arg to i32* %__1 = inttoptr i32 %addr_arg to i32*
%iv = load i32* %__1, align 1 %iv = load i32, i32* %__1, align 1
ret void ret void
; CHECK: Initial CFG ; CHECK: Initial CFG
; CHECK: entry: ; CHECK: entry:
; CHECK-NEXT: %iv = load i32* %addr_arg, align 1 ; CHECK-NEXT: %iv = load i32, i32* %addr_arg, align 1
; CHECK-NEXT: ret void ; CHECK-NEXT: ret void
} }
define void @load_i16(i32 %addr_arg) { define void @load_i16(i32 %addr_arg) {
entry: entry:
%__1 = inttoptr i32 %addr_arg to i16* %__1 = inttoptr i32 %addr_arg to i16*
%iv = load i16* %__1, align 1 %iv = load i16, i16* %__1, align 1
ret void ret void
; CHECK: Initial CFG ; CHECK: Initial CFG
; CHECK: entry: ; CHECK: entry:
; CHECK-NEXT: %iv = load i16* %addr_arg, align 1 ; CHECK-NEXT: %iv = load i16, i16* %addr_arg, align 1
; CHECK-NEXT: ret void ; CHECK-NEXT: ret void
} }
define void @load_i8(i32 %addr_arg) { define void @load_i8(i32 %addr_arg) {
entry: entry:
%__1 = inttoptr i32 %addr_arg to i8* %__1 = inttoptr i32 %addr_arg to i8*
%iv = load i8* %__1, align 1 %iv = load i8, i8* %__1, align 1
ret void ret void
; CHECK: Initial CFG ; CHECK: Initial CFG
; CHECK: entry: ; CHECK: entry:
; CHECK-NEXT: %iv = load i8* %addr_arg, align 1 ; CHECK-NEXT: %iv = load i8, i8* %addr_arg, align 1
; CHECK-NEXT: ret void ; CHECK-NEXT: ret void
} }
...@@ -11,7 +11,7 @@ define internal i32 @zext_fold(i32 %arg) { ...@@ -11,7 +11,7 @@ define internal i32 @zext_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i8* %addr = inttoptr i32 %ptr to i8*
%load = load i8* %addr, align 1 %load = load i8, i8* %addr, align 1
%result = zext i8 %load to i32 %result = zext i8 %load to i32
ret i32 %result ret i32 %result
} }
...@@ -22,7 +22,7 @@ define internal i32 @zext_nofold(i32 %arg) { ...@@ -22,7 +22,7 @@ define internal i32 @zext_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i8* %addr = inttoptr i32 %ptr to i8*
%load = load i8* %addr, align 1 %load = load i8, i8* %addr, align 1
%tmp1 = zext i8 %load to i32 %tmp1 = zext i8 %load to i32
%tmp2 = zext i8 %load to i32 %tmp2 = zext i8 %load to i32
%result = add i32 %tmp1, %tmp2 %result = add i32 %tmp1, %tmp2
...@@ -36,7 +36,7 @@ define internal i32 @sext_fold(i32 %arg) { ...@@ -36,7 +36,7 @@ define internal i32 @sext_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i8* %addr = inttoptr i32 %ptr to i8*
%load = load i8* %addr, align 1 %load = load i8, i8* %addr, align 1
%result = sext i8 %load to i32 %result = sext i8 %load to i32
ret i32 %result ret i32 %result
} }
...@@ -47,7 +47,7 @@ define internal i32 @sext_nofold(i32 %arg) { ...@@ -47,7 +47,7 @@ define internal i32 @sext_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i8* %addr = inttoptr i32 %ptr to i8*
%load = load i8* %addr, align 1 %load = load i8, i8* %addr, align 1
%tmp1 = sext i8 %load to i32 %tmp1 = sext i8 %load to i32
%tmp2 = sext i8 %load to i32 %tmp2 = sext i8 %load to i32
%result = add i32 %tmp1, %tmp2 %result = add i32 %tmp1, %tmp2
...@@ -61,7 +61,7 @@ define internal float @fptrunc_fold(i32 %arg) { ...@@ -61,7 +61,7 @@ define internal float @fptrunc_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%result = fptrunc double %load to float %result = fptrunc double %load to float
ret float %result ret float %result
} }
...@@ -72,7 +72,7 @@ define internal float @fptrunc_nofold(i32 %arg) { ...@@ -72,7 +72,7 @@ define internal float @fptrunc_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%tmp1 = fptrunc double %load to float %tmp1 = fptrunc double %load to float
%tmp2 = fptrunc double %load to float %tmp2 = fptrunc double %load to float
%result = fadd float %tmp1, %tmp2 %result = fadd float %tmp1, %tmp2
...@@ -86,7 +86,7 @@ define internal double @fpext_fold(i32 %arg) { ...@@ -86,7 +86,7 @@ define internal double @fpext_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to float* %addr = inttoptr i32 %ptr to float*
%load = load float* %addr, align 4 %load = load float, float* %addr, align 4
%result = fpext float %load to double %result = fpext float %load to double
ret double %result ret double %result
} }
...@@ -97,7 +97,7 @@ define internal double @fpext_nofold(i32 %arg) { ...@@ -97,7 +97,7 @@ define internal double @fpext_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to float* %addr = inttoptr i32 %ptr to float*
%load = load float* %addr, align 4 %load = load float, float* %addr, align 4
%tmp1 = fpext float %load to double %tmp1 = fpext float %load to double
%tmp2 = fpext float %load to double %tmp2 = fpext float %load to double
%result = fadd double %tmp1, %tmp2 %result = fadd double %tmp1, %tmp2
...@@ -111,7 +111,7 @@ define internal i32 @fptoui_fold(i32 %arg) { ...@@ -111,7 +111,7 @@ define internal i32 @fptoui_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%result = fptoui double %load to i16 %result = fptoui double %load to i16
%result2 = zext i16 %result to i32 %result2 = zext i16 %result to i32
ret i32 %result2 ret i32 %result2
...@@ -123,7 +123,7 @@ define internal i32 @fptoui_nofold(i32 %arg) { ...@@ -123,7 +123,7 @@ define internal i32 @fptoui_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%tmp1 = fptoui double %load to i16 %tmp1 = fptoui double %load to i16
%tmp2 = fptoui double %load to i16 %tmp2 = fptoui double %load to i16
%result = add i16 %tmp1, %tmp2 %result = add i16 %tmp1, %tmp2
...@@ -138,7 +138,7 @@ define internal i32 @fptosi_fold(i32 %arg) { ...@@ -138,7 +138,7 @@ define internal i32 @fptosi_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%result = fptosi double %load to i16 %result = fptosi double %load to i16
%result2 = zext i16 %result to i32 %result2 = zext i16 %result to i32
ret i32 %result2 ret i32 %result2
...@@ -150,7 +150,7 @@ define internal i32 @fptosi_nofold(i32 %arg) { ...@@ -150,7 +150,7 @@ define internal i32 @fptosi_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%tmp1 = fptosi double %load to i16 %tmp1 = fptosi double %load to i16
%tmp2 = fptosi double %load to i16 %tmp2 = fptosi double %load to i16
%result = add i16 %tmp1, %tmp2 %result = add i16 %tmp1, %tmp2
...@@ -165,7 +165,7 @@ define internal double @uitofp_fold(i32 %arg) { ...@@ -165,7 +165,7 @@ define internal double @uitofp_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i16* %addr = inttoptr i32 %ptr to i16*
%load = load i16* %addr, align 1 %load = load i16, i16* %addr, align 1
%result = uitofp i16 %load to double %result = uitofp i16 %load to double
ret double %result ret double %result
} }
...@@ -176,7 +176,7 @@ define internal double @uitofp_nofold(i32 %arg) { ...@@ -176,7 +176,7 @@ define internal double @uitofp_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i16* %addr = inttoptr i32 %ptr to i16*
%load = load i16* %addr, align 1 %load = load i16, i16* %addr, align 1
%tmp1 = uitofp i16 %load to double %tmp1 = uitofp i16 %load to double
%tmp2 = uitofp i16 %load to double %tmp2 = uitofp i16 %load to double
%result = fadd double %tmp1, %tmp2 %result = fadd double %tmp1, %tmp2
...@@ -190,7 +190,7 @@ define internal double @sitofp_fold(i32 %arg) { ...@@ -190,7 +190,7 @@ define internal double @sitofp_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i16* %addr = inttoptr i32 %ptr to i16*
%load = load i16* %addr, align 1 %load = load i16, i16* %addr, align 1
%result = sitofp i16 %load to double %result = sitofp i16 %load to double
ret double %result ret double %result
} }
...@@ -201,7 +201,7 @@ define internal double @sitofp_nofold(i32 %arg) { ...@@ -201,7 +201,7 @@ define internal double @sitofp_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i16* %addr = inttoptr i32 %ptr to i16*
%load = load i16* %addr, align 1 %load = load i16, i16* %addr, align 1
%tmp1 = sitofp i16 %load to double %tmp1 = sitofp i16 %load to double
%tmp2 = sitofp i16 %load to double %tmp2 = sitofp i16 %load to double
%result = fadd double %tmp1, %tmp2 %result = fadd double %tmp1, %tmp2
...@@ -215,7 +215,7 @@ define internal double @bitcast_i64_fold(i32 %arg) { ...@@ -215,7 +215,7 @@ define internal double @bitcast_i64_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i64* %addr = inttoptr i32 %ptr to i64*
%load = load i64* %addr, align 1 %load = load i64, i64* %addr, align 1
%result = bitcast i64 %load to double %result = bitcast i64 %load to double
ret double %result ret double %result
} }
...@@ -226,7 +226,7 @@ define internal double @bitcast_i64_nofold(i32 %arg) { ...@@ -226,7 +226,7 @@ define internal double @bitcast_i64_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to i64* %addr = inttoptr i32 %ptr to i64*
%load = load i64* %addr, align 1 %load = load i64, i64* %addr, align 1
%tmp1 = bitcast i64 %load to double %tmp1 = bitcast i64 %load to double
%tmp2 = bitcast i64 %load to double %tmp2 = bitcast i64 %load to double
%result = fadd double %tmp1, %tmp2 %result = fadd double %tmp1, %tmp2
...@@ -240,7 +240,7 @@ define internal i64 @bitcast_double_fold(i32 %arg) { ...@@ -240,7 +240,7 @@ define internal i64 @bitcast_double_fold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%result = bitcast double %load to i64 %result = bitcast double %load to i64
ret i64 %result ret i64 %result
} }
...@@ -254,7 +254,7 @@ define internal i64 @bitcast_double_nofold(i32 %arg) { ...@@ -254,7 +254,7 @@ define internal i64 @bitcast_double_nofold(i32 %arg) {
entry: entry:
%ptr = add i32 %arg, 200 %ptr = add i32 %arg, 200
%addr = inttoptr i32 %ptr to double* %addr = inttoptr i32 %ptr to double*
%load = load double* %addr, align 8 %load = load double, double* %addr, align 8
%tmp1 = bitcast double %load to i64 %tmp1 = bitcast double %load to i64
%tmp2 = bitcast double %load to i64 %tmp2 = bitcast double %load to i64
%result = add i64 %tmp1, %tmp2 %result = add i64 %tmp1, %tmp2
......
...@@ -26,12 +26,12 @@ entry: ...@@ -26,12 +26,12 @@ entry:
call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6) call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6)
%p_b = bitcast [4 x i8]* @g32_b to i32* %p_b = bitcast [4 x i8]* @g32_b to i32*
%l_b = load i32* %p_b, align 1 %l_b = load i32, i32* %p_b, align 1
%l_b2 = add i32 %l_b, 1 %l_b2 = add i32 %l_b, 1
store i32 %l_b2, i32* %p_b, align 1 store i32 %l_b2, i32* %p_b, align 1
%p_c = bitcast [4 x i8]* @g32_c to i32* %p_c = bitcast [4 x i8]* @g32_c to i32*
%l_c = load i32* %p_c, align 1 %l_c = load i32, i32* %p_c, align 1
%l_c2 = add i32 %l_c, 1 %l_c2 = add i32 %l_c, 1
call void @llvm.nacl.atomic.fence.all() call void @llvm.nacl.atomic.fence.all()
store i32 %l_c2, i32* %p_c, align 1 store i32 %l_c2, i32* %p_c, align 1
...@@ -66,13 +66,13 @@ entry: ...@@ -66,13 +66,13 @@ entry:
call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6) call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6)
%p_b = bitcast [4 x i8]* @g32_b to i32* %p_b = bitcast [4 x i8]* @g32_b to i32*
%l_b = load i32* %p_b, align 1 %l_b = load i32, i32* %p_b, align 1
%l_b2 = add i32 %l_b, 1 %l_b2 = add i32 %l_b, 1
store i32 %l_b2, i32* %p_b, align 1 store i32 %l_b2, i32* %p_b, align 1
%p_c = bitcast [4 x i8]* @g32_c to i32* %p_c = bitcast [4 x i8]* @g32_c to i32*
call void @llvm.nacl.atomic.fence.all() call void @llvm.nacl.atomic.fence.all()
%l_c = load i32* %p_c, align 1 %l_c = load i32, i32* %p_c, align 1
%l_c2 = add i32 %l_c, 1 %l_c2 = add i32 %l_c, 1
store i32 %l_c2, i32* %p_c, align 1 store i32 %l_c2, i32* %p_c, align 1
...@@ -107,13 +107,13 @@ entry: ...@@ -107,13 +107,13 @@ entry:
call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6) call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6)
%p_b = bitcast [4 x i8]* @g32_b to i32* %p_b = bitcast [4 x i8]* @g32_b to i32*
%l_b = load i32* %p_b, align 1 %l_b = load i32, i32* %p_b, align 1
call void @llvm.nacl.atomic.fence.all() call void @llvm.nacl.atomic.fence.all()
%l_b2 = add i32 %l_b, 1 %l_b2 = add i32 %l_b, 1
store i32 %l_b2, i32* %p_b, align 1 store i32 %l_b2, i32* %p_b, align 1
%p_c = bitcast [4 x i8]* @g32_c to i32* %p_c = bitcast [4 x i8]* @g32_c to i32*
%l_c = load i32* %p_c, align 1 %l_c = load i32, i32* %p_c, align 1
%l_c2 = add i32 %l_c, 1 %l_c2 = add i32 %l_c, 1
store i32 %l_c2, i32* %p_c, align 1 store i32 %l_c2, i32* %p_c, align 1
...@@ -143,22 +143,22 @@ entry: ...@@ -143,22 +143,22 @@ entry:
define i32 @could_have_fused_loads() { define i32 @could_have_fused_loads() {
entry: entry:
%ptr1 = bitcast [4 x i8]* @g32_d to i8* %ptr1 = bitcast [4 x i8]* @g32_d to i8*
%b1 = load i8* %ptr1, align 1 %b1 = load i8, i8* %ptr1, align 1
%int_ptr2 = ptrtoint [4 x i8]* @g32_d to i32 %int_ptr2 = ptrtoint [4 x i8]* @g32_d to i32
%int_ptr_bump2 = add i32 %int_ptr2, 1 %int_ptr_bump2 = add i32 %int_ptr2, 1
%ptr2 = inttoptr i32 %int_ptr_bump2 to i8* %ptr2 = inttoptr i32 %int_ptr_bump2 to i8*
%b2 = load i8* %ptr2, align 1 %b2 = load i8, i8* %ptr2, align 1
%int_ptr_bump3 = add i32 %int_ptr2, 2 %int_ptr_bump3 = add i32 %int_ptr2, 2
%ptr3 = inttoptr i32 %int_ptr_bump3 to i8* %ptr3 = inttoptr i32 %int_ptr_bump3 to i8*
%b3 = load i8* %ptr3, align 1 %b3 = load i8, i8* %ptr3, align 1
call void @llvm.nacl.atomic.fence.all() call void @llvm.nacl.atomic.fence.all()
%int_ptr_bump4 = add i32 %int_ptr2, 3 %int_ptr_bump4 = add i32 %int_ptr2, 3
%ptr4 = inttoptr i32 %int_ptr_bump4 to i8* %ptr4 = inttoptr i32 %int_ptr_bump4 to i8*
%b4 = load i8* %ptr4, align 1 %b4 = load i8, i8* %ptr4, align 1
%b1.ext = zext i8 %b1 to i32 %b1.ext = zext i8 %b1 to i32
%b2.ext = zext i8 %b2 to i32 %b2.ext = zext i8 %b2 to i32
...@@ -188,11 +188,11 @@ entry: ...@@ -188,11 +188,11 @@ entry:
%cmp = icmp eq i32 %x, 1 %cmp = icmp eq i32 %x, 1
br i1 %cmp, label %branch1, label %branch2 br i1 %cmp, label %branch1, label %branch2
branch1: branch1:
%y = load i32* %ptr, align 1 %y = load i32, i32* %ptr, align 1
ret i32 %y ret i32 %y
branch2: branch2:
call void @llvm.nacl.atomic.fence.all() call void @llvm.nacl.atomic.fence.all()
%z = load i32* %ptr, align 1 %z = load i32, i32* %ptr, align 1
ret i32 %z ret i32 %z
} }
; CHECK-LABEL: could_have_hoisted_loads ; CHECK-LABEL: could_have_hoisted_loads
......
...@@ -60,7 +60,7 @@ entry: ...@@ -60,7 +60,7 @@ entry:
%__1 = ptrtoint i8* %ptr to i32 %__1 = ptrtoint i8* %ptr to i32
%x = add i32 %__1, %__1 %x = add i32 %__1, %__1
%__3 = inttoptr i32 %x to i32* %__3 = inttoptr i32 %x to i32*
%v = load i32* %__3, align 1 %v = load i32, i32* %__3, align 1
%v_add = add i32 %v, 1 %v_add = add i32 %v, 1
%ptr2 = call i8* @llvm.nacl.read.tp() %ptr2 = call i8* @llvm.nacl.read.tp()
...@@ -226,7 +226,7 @@ entry: ...@@ -226,7 +226,7 @@ entry:
define float @test_sqrt_float_mergeable_load(float %x, i32 %iptr) { define float @test_sqrt_float_mergeable_load(float %x, i32 %iptr) {
entry: entry:
%__2 = inttoptr i32 %iptr to float* %__2 = inttoptr i32 %iptr to float*
%y = load float* %__2, align 4 %y = load float, float* %__2, align 4
%r5 = call float @llvm.sqrt.f32(float %y) %r5 = call float @llvm.sqrt.f32(float %y)
%r6 = fadd float %x, %r5 %r6 = fadd float %x, %r5
ret float %r6 ret float %r6
...@@ -253,7 +253,7 @@ entry: ...@@ -253,7 +253,7 @@ entry:
define double @test_sqrt_double_mergeable_load(double %x, i32 %iptr) { define double @test_sqrt_double_mergeable_load(double %x, i32 %iptr) {
entry: entry:
%__2 = inttoptr i32 %iptr to double* %__2 = inttoptr i32 %iptr to double*
%y = load double* %__2, align 8 %y = load double, double* %__2, align 8
%r5 = call double @llvm.sqrt.f64(double %y) %r5 = call double @llvm.sqrt.f64(double %y)
%r6 = fadd double %x, %r5 %r6 = fadd double %x, %r5
ret double %r6 ret double %r6
......
...@@ -59,7 +59,7 @@ body: ...@@ -59,7 +59,7 @@ body:
; addressing mode optimization. ; addressing mode optimization.
%interior__4 = add i32 %interior, 0 %interior__4 = add i32 %interior, 0
%__4 = inttoptr i32 %interior__4 to i32* %__4 = inttoptr i32 %interior__4 to i32*
%elt = load i32* %__4, align 1 %elt = load i32, i32* %__4, align 1
%cmp = icmp eq i32 %elt, 0 %cmp = icmp eq i32 %elt, 0
br i1 %cmp, label %exit, label %body br i1 %cmp, label %exit, label %body
exit: exit:
......
...@@ -32,14 +32,14 @@ bb21: ; preds = %bb27, %bb17 ...@@ -32,14 +32,14 @@ bb21: ; preds = %bb27, %bb17
%tmp23 = add i32 undef, -1 %tmp23 = add i32 undef, -1
%tmp24 = add i32 undef, undef %tmp24 = add i32 undef, undef
%undef.ptr = inttoptr i32 undef to i32* %undef.ptr = inttoptr i32 undef to i32*
%tmp25 = load i32* %undef.ptr, align 1 %tmp25 = load i32, i32* %undef.ptr, align 1
%tmp26 = icmp eq i32 undef, %tmp22 %tmp26 = icmp eq i32 undef, %tmp22
br i1 %tmp26, label %bb34, label %bb32 br i1 %tmp26, label %bb34, label %bb32
bb27: ; preds = %bb42, %bb34 bb27: ; preds = %bb42, %bb34
%tmp28 = icmp sgt i32 %tmp23, 0 %tmp28 = icmp sgt i32 %tmp23, 0
%tmp29 = inttoptr i32 %tmp19 to i32* %tmp29 = inttoptr i32 %tmp19 to i32*
%tmp30 = load i32* %tmp29, align 1 %tmp30 = load i32, i32* %tmp29, align 1
br i1 %tmp28, label %bb21, label %bb46 br i1 %tmp28, label %bb21, label %bb46
bb32: ; preds = %bb21 bb32: ; preds = %bb21
...@@ -57,7 +57,7 @@ bb35: ; preds = %bb34 ...@@ -57,7 +57,7 @@ bb35: ; preds = %bb34
bb42: ; preds = %bb35 bb42: ; preds = %bb35
%tmp43 = inttoptr i32 %tmp to i32* %tmp43 = inttoptr i32 %tmp to i32*
%tmp44 = load i32* %tmp43, align 1 %tmp44 = load i32, i32* %tmp43, align 1
%tmp45 = icmp eq i32 %tmp44, %tmp18 %tmp45 = icmp eq i32 %tmp44, %tmp18
br i1 %tmp45, label %bb27, label %bb15 br i1 %tmp45, label %bb27, label %bb15
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
define void @conv1() { define void @conv1() {
entry: entry:
%__0 = bitcast [4 x i8]* @u1 to i32* %__0 = bitcast [4 x i8]* @u1 to i32*
%v0 = load i32* %__0, align 1 %v0 = load i32, i32* %__0, align 1
%sext = shl i32 %v0, 24 %sext = shl i32 %v0, 24
%v1 = ashr i32 %sext, 24 %v1 = ashr i32 %sext, 24
%__4 = bitcast [4 x i8]* @i1 to i32* %__4 = bitcast [4 x i8]* @i1 to i32*
...@@ -27,7 +27,7 @@ entry: ...@@ -27,7 +27,7 @@ entry:
define void @conv2() { define void @conv2() {
entry: entry:
%__0 = bitcast [4 x i8]* @u1 to i32* %__0 = bitcast [4 x i8]* @u1 to i32*
%v0 = load i32* %__0, align 1 %v0 = load i32, i32* %__0, align 1
%sext1 = shl i32 %v0, 16 %sext1 = shl i32 %v0, 16
%v1 = ashr i32 %sext1, 16 %v1 = ashr i32 %sext1, 16
%__4 = bitcast [4 x i8]* @i2 to i32* %__4 = bitcast [4 x i8]* @i2 to i32*
......
...@@ -17,7 +17,7 @@ for.body: ...@@ -17,7 +17,7 @@ for.body:
%gep_array = mul i32 %i.06, 4 %gep_array = mul i32 %i.06, 4
%gep = add i32 %a, %gep_array %gep = add i32 %a, %gep_array
%__9 = inttoptr i32 %gep to i32* %__9 = inttoptr i32 %gep to i32*
%v0 = load i32* %__9, align 1 %v0 = load i32, i32* %__9, align 1
%add = add i32 %v0, %sum.05 %add = add i32 %v0, %sum.05
%inc = add i32 %i.06, 1 %inc = add i32 %i.06, 1
%cmp = icmp slt i32 %inc, %n %cmp = icmp slt i32 %inc, %n
......
...@@ -7,35 +7,35 @@ ...@@ -7,35 +7,35 @@
define internal i32 @compute_important_function(i32 %v1, i32 %v2) { define internal i32 @compute_important_function(i32 %v1, i32 %v2) {
entry: entry:
%__2 = inttoptr i32 %v1 to i32* %__2 = inttoptr i32 %v1 to i32*
%_v0 = load i32* %__2, align 1 %_v0 = load i32, i32* %__2, align 1
; CHECK: entry: ; CHECK: entry:
; CHECK-NEXT: %_v0 = load i32* {{.*}}, align 1 ; CHECK-NEXT: %_v0 = load i32, i32* {{.*}}, align 1
%__4 = inttoptr i32 %v2 to i32* %__4 = inttoptr i32 %v2 to i32*
%_v1 = load i32* %__4, align 1 %_v1 = load i32, i32* %__4, align 1
%gep = add i32 %v2, 12 %gep = add i32 %v2, 12
%__7 = inttoptr i32 %gep to i32* %__7 = inttoptr i32 %gep to i32*
%_v2 = load i32* %__7, align 1 %_v2 = load i32, i32* %__7, align 1
%mul = mul i32 %_v2, %_v1 %mul = mul i32 %_v2, %_v1
%gep6 = add i32 %v1, 4 %gep6 = add i32 %v1, 4
%__11 = inttoptr i32 %gep6 to i32* %__11 = inttoptr i32 %gep6 to i32*
%_v3 = load i32* %__11, align 1 %_v3 = load i32, i32* %__11, align 1
%gep8 = add i32 %v2, 8 %gep8 = add i32 %v2, 8
%__14 = inttoptr i32 %gep8 to i32* %__14 = inttoptr i32 %gep8 to i32*
%_v4 = load i32* %__14, align 1 %_v4 = load i32, i32* %__14, align 1
%gep10 = add i32 %v2, 4 %gep10 = add i32 %v2, 4
%__17 = inttoptr i32 %gep10 to i32* %__17 = inttoptr i32 %gep10 to i32*
%_v5 = load i32* %__17, align 1 %_v5 = load i32, i32* %__17, align 1
%mul3 = mul i32 %_v5, %_v4 %mul3 = mul i32 %_v5, %_v4
%gep12 = add i32 %v1, 8 %gep12 = add i32 %v1, 8
%__21 = inttoptr i32 %gep12 to i32* %__21 = inttoptr i32 %gep12 to i32*
%_v6 = load i32* %__21, align 1 %_v6 = load i32, i32* %__21, align 1
%mul7 = mul i32 %_v6, %_v3 %mul7 = mul i32 %_v6, %_v3
%mul9 = mul i32 %mul7, %_v6 %mul9 = mul i32 %mul7, %_v6
%gep14 = add i32 %v1, 12 %gep14 = add i32 %v1, 12
%__26 = inttoptr i32 %gep14 to i32* %__26 = inttoptr i32 %gep14 to i32*
%_v7 = load i32* %__26, align 1 %_v7 = load i32, i32* %__26, align 1
%mul11 = mul i32 %mul9, %_v7 %mul11 = mul i32 %mul9, %_v7
%add4.neg = add i32 %mul, %_v0 %add4.neg = add i32 %mul, %_v0
%add = sub i32 %add4.neg, %_v3 %add = sub i32 %add4.neg, %_v3
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
define <4 x i32> @test_add(i32 %addr_i, <4 x i32> %addend) { define <4 x i32> @test_add(i32 %addr_i, <4 x i32> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x i32>* %addr = inttoptr i32 %addr_i to <4 x i32>*
%loaded = load <4 x i32>* %addr, align 4 %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
%result = add <4 x i32> %addend, %loaded %result = add <4 x i32> %addend, %loaded
ret <4 x i32> %result ret <4 x i32> %result
} }
...@@ -21,7 +21,7 @@ entry: ...@@ -21,7 +21,7 @@ entry:
define <4 x i32> @test_and(i32 %addr_i, <4 x i32> %addend) { define <4 x i32> @test_and(i32 %addr_i, <4 x i32> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x i32>* %addr = inttoptr i32 %addr_i to <4 x i32>*
%loaded = load <4 x i32>* %addr, align 4 %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
%result = and <4 x i32> %addend, %loaded %result = and <4 x i32> %addend, %loaded
ret <4 x i32> %result ret <4 x i32> %result
} }
...@@ -32,7 +32,7 @@ entry: ...@@ -32,7 +32,7 @@ entry:
define <4 x i32> @test_or(i32 %addr_i, <4 x i32> %addend) { define <4 x i32> @test_or(i32 %addr_i, <4 x i32> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x i32>* %addr = inttoptr i32 %addr_i to <4 x i32>*
%loaded = load <4 x i32>* %addr, align 4 %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
%result = or <4 x i32> %addend, %loaded %result = or <4 x i32> %addend, %loaded
ret <4 x i32> %result ret <4 x i32> %result
} }
...@@ -43,7 +43,7 @@ entry: ...@@ -43,7 +43,7 @@ entry:
define <4 x i32> @test_xor(i32 %addr_i, <4 x i32> %addend) { define <4 x i32> @test_xor(i32 %addr_i, <4 x i32> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x i32>* %addr = inttoptr i32 %addr_i to <4 x i32>*
%loaded = load <4 x i32>* %addr, align 4 %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
%result = xor <4 x i32> %addend, %loaded %result = xor <4 x i32> %addend, %loaded
ret <4 x i32> %result ret <4 x i32> %result
} }
...@@ -54,7 +54,7 @@ entry: ...@@ -54,7 +54,7 @@ entry:
define <4 x i32> @test_sub(i32 %addr_i, <4 x i32> %addend) { define <4 x i32> @test_sub(i32 %addr_i, <4 x i32> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x i32>* %addr = inttoptr i32 %addr_i to <4 x i32>*
%loaded = load <4 x i32>* %addr, align 4 %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
%result = sub <4 x i32> %addend, %loaded %result = sub <4 x i32> %addend, %loaded
ret <4 x i32> %result ret <4 x i32> %result
} }
...@@ -65,7 +65,7 @@ entry: ...@@ -65,7 +65,7 @@ entry:
define <4 x float> @test_fadd(i32 %addr_i, <4 x float> %addend) { define <4 x float> @test_fadd(i32 %addr_i, <4 x float> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x float>* %addr = inttoptr i32 %addr_i to <4 x float>*
%loaded = load <4 x float>* %addr, align 4 %loaded = load <4 x float>, <4 x float>* %addr, align 4
%result = fadd <4 x float> %addend, %loaded %result = fadd <4 x float> %addend, %loaded
ret <4 x float> %result ret <4 x float> %result
} }
...@@ -76,7 +76,7 @@ entry: ...@@ -76,7 +76,7 @@ entry:
define <4 x float> @test_fsub(i32 %addr_i, <4 x float> %addend) { define <4 x float> @test_fsub(i32 %addr_i, <4 x float> %addend) {
entry: entry:
%addr = inttoptr i32 %addr_i to <4 x float>* %addr = inttoptr i32 %addr_i to <4 x float>*
%loaded = load <4 x float>* %addr, align 4 %loaded = load <4 x float>, <4 x float>* %addr, align 4
%result = fsub <4 x float> %addend, %loaded %result = fsub <4 x float> %addend, %loaded
ret <4 x float> %result ret <4 x float> %result
} }
......
...@@ -80,7 +80,7 @@ entry: ...@@ -80,7 +80,7 @@ entry:
%NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32* %NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32*
; CHECK: %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32 ; CHECK: %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32
; CROSS: %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32 ; CROSS: %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32
%0 = load i32* %NumArraysElements.bc, align 1 %0 = load i32, i32* %NumArraysElements.bc, align 1
ret i32 %0 ret i32 %0
} }
...@@ -91,7 +91,7 @@ entry: ...@@ -91,7 +91,7 @@ entry:
%NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32* %NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32*
; CHECK: %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32 ; CHECK: %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32
; CROSS: %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32 ; CROSS: %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32
%0 = load i32* %NumArraysElements.bc, align 1 %0 = load i32, i32* %NumArraysElements.bc, align 1
%cmp = icmp ugt i32 %0, %WhichArray %cmp = icmp ugt i32 %0, %WhichArray
; CHECK: %cmp = icmp ugt i32 %__3, %WhichArray ; CHECK: %cmp = icmp ugt i32 %__3, %WhichArray
; CROSS: %cmp = icmp ugt i32 %__3, %WhichArray ; CROSS: %cmp = icmp ugt i32 %__3, %WhichArray
...@@ -114,7 +114,7 @@ if.end: ; preds = %entry ...@@ -114,7 +114,7 @@ if.end: ; preds = %entry
%gep = add i32 %expanded1, %gep_array %gep = add i32 %expanded1, %gep_array
%gep1 = add i32 %gep, 4 %gep1 = add i32 %gep, 4
%gep1.asptr = inttoptr i32 %gep1 to i32* %gep1.asptr = inttoptr i32 %gep1 to i32*
%1 = load i32* %gep1.asptr, align 1 %1 = load i32, i32* %gep1.asptr, align 1
%Len.asptr3 = inttoptr i32 %Len to i32* %Len.asptr3 = inttoptr i32 %Len to i32*
; CHECK: %Len.asptr3 = i32 %Len ; CHECK: %Len.asptr3 = i32 %Len
; CROSS: %Len.asptr3 = i32 %Len ; CROSS: %Len.asptr3 = i32 %Len
...@@ -127,7 +127,7 @@ if.end: ; preds = %entry ...@@ -127,7 +127,7 @@ if.end: ; preds = %entry
; CROSS: %expanded2 = i32 @Subzero_Arrays ; CROSS: %expanded2 = i32 @Subzero_Arrays
%gep4 = add i32 %expanded2, %gep_array3 %gep4 = add i32 %expanded2, %gep_array3
%gep4.asptr = inttoptr i32 %gep4 to i32* %gep4.asptr = inttoptr i32 %gep4 to i32*
%2 = load i32* %gep4.asptr, align 1 %2 = load i32, i32* %gep4.asptr, align 1
br label %return br label %return
return: ; preds = %if.end, %if.then return: ; preds = %if.end, %if.then
...@@ -170,7 +170,7 @@ entry: ...@@ -170,7 +170,7 @@ entry:
%ExternName1.bc = bitcast [4 x i8]* @ExternName1 to i32* %ExternName1.bc = bitcast [4 x i8]* @ExternName1 to i32*
; CHECK: %ExternName1.bc = bitcast i32 @ExternName1 to i32 ; CHECK: %ExternName1.bc = bitcast i32 @ExternName1 to i32
; CROSS: %ExternName1.bc = bitcast i32 @ExternName1 to i32 ; CROSS: %ExternName1.bc = bitcast i32 @ExternName1 to i32
%0 = load i32* %ExternName1.bc, align 1 %0 = load i32, i32* %ExternName1.bc, align 1
%expanded6 = ptrtoint [80 x i8]* @_ZL8StructEx to i32 %expanded6 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
; CHECK: %expanded6 = i32 @_ZL8StructEx ; CHECK: %expanded6 = i32 @_ZL8StructEx
; CROSS: %expanded6 = i32 @Subzero__ZL8StructEx ; CROSS: %expanded6 = i32 @Subzero__ZL8StructEx
...@@ -198,7 +198,7 @@ entry: ...@@ -198,7 +198,7 @@ entry:
%ExternName4.bc = bitcast [4 x i8]* @ExternName4 to i32* %ExternName4.bc = bitcast [4 x i8]* @ExternName4 to i32*
; CHECK: %ExternName4.bc = bitcast i32 @ExternName4 to i32 ; CHECK: %ExternName4.bc = bitcast i32 @ExternName4 to i32
; CROSS: %ExternName4.bc = bitcast i32 @ExternName4 to i32 ; CROSS: %ExternName4.bc = bitcast i32 @ExternName4 to i32
%1 = load i32* %ExternName4.bc, align 1 %1 = load i32, i32* %ExternName4.bc, align 1
%expanded11 = ptrtoint [80 x i8]* @_ZL8StructEx to i32 %expanded11 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
; CHECK: %expanded11 = i32 @_ZL8StructEx ; CHECK: %expanded11 = i32 @_ZL8StructEx
; CROSS: %expanded11 = i32 @Subzero__ZL8StructEx ; CROSS: %expanded11 = i32 @Subzero__ZL8StructEx
...@@ -208,7 +208,7 @@ entry: ...@@ -208,7 +208,7 @@ entry:
%ExternName3.bc = bitcast [4 x i8]* @ExternName3 to i32* %ExternName3.bc = bitcast [4 x i8]* @ExternName3 to i32*
; CHECK: %ExternName3.bc = bitcast i32 @ExternName3 to i32 ; CHECK: %ExternName3.bc = bitcast i32 @ExternName3 to i32
; CROSS: %ExternName3.bc = bitcast i32 @ExternName3 to i32 ; CROSS: %ExternName3.bc = bitcast i32 @ExternName3 to i32
%2 = load i32* %ExternName3.bc, align 1 %2 = load i32, i32* %ExternName3.bc, align 1
%expanded13 = ptrtoint [80 x i8]* @_ZL8StructEx to i32 %expanded13 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
; CHECK: %expanded13 = i32 @_ZL8StructEx ; CHECK: %expanded13 = i32 @_ZL8StructEx
; CROSS: %expanded13 = i32 @Subzero__ZL8StructEx ; CROSS: %expanded13 = i32 @Subzero__ZL8StructEx
...@@ -236,7 +236,7 @@ entry: ...@@ -236,7 +236,7 @@ entry:
%ExternName2.bc = bitcast [4 x i8]* @ExternName2 to i32* %ExternName2.bc = bitcast [4 x i8]* @ExternName2 to i32*
; CHECK: %ExternName2.bc = bitcast i32 @ExternName2 to i32 ; CHECK: %ExternName2.bc = bitcast i32 @ExternName2 to i32
; CROSS: %ExternName2.bc = bitcast i32 @ExternName2 to i32 ; CROSS: %ExternName2.bc = bitcast i32 @ExternName2 to i32
%3 = load i32* %ExternName2.bc, align 1 %3 = load i32, i32* %ExternName2.bc, align 1
%expanded18 = ptrtoint [80 x i8]* @_ZL8StructEx to i32 %expanded18 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
; CHECK: %expanded18 = i32 @_ZL8StructEx ; CHECK: %expanded18 = i32 @_ZL8StructEx
; CROSS: %expanded18 = i32 @Subzero__ZL8StructEx ; CROSS: %expanded18 = i32 @Subzero__ZL8StructEx
...@@ -246,7 +246,7 @@ entry: ...@@ -246,7 +246,7 @@ entry:
%ExternName5.bc = bitcast [4 x i8]* @ExternName5 to i32* %ExternName5.bc = bitcast [4 x i8]* @ExternName5 to i32*
; CHECK: %ExternName5.bc = bitcast i32 @ExternName5 to i32 ; CHECK: %ExternName5.bc = bitcast i32 @ExternName5 to i32
; CROSS: %ExternName5.bc = bitcast i32 @ExternName5 to i32 ; CROSS: %ExternName5.bc = bitcast i32 @ExternName5 to i32
%4 = load i32* %ExternName5.bc, align 1 %4 = load i32, i32* %ExternName5.bc, align 1
%expanded20 = ptrtoint [80 x i8]* @_ZL8StructEx to i32 %expanded20 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
; CHECK: %expanded20 = i32 @_ZL8StructEx ; CHECK: %expanded20 = i32 @_ZL8StructEx
; CROSS: %expanded20 = i32 @Subzero__ZL8StructEx ; CROSS: %expanded20 = i32 @Subzero__ZL8StructEx
......
...@@ -9,12 +9,12 @@ ...@@ -9,12 +9,12 @@
define i32 @load_i8(i32 %addr) { define i32 @load_i8(i32 %addr) {
entry: entry:
%addr_i8 = inttoptr i32 %addr to i8* %addr_i8 = inttoptr i32 %addr to i8*
%v = load i8* %addr_i8, align 1 %v = load i8, i8* %addr_i8, align 1
%r = sext i8 %v to i32 %r = sext i8 %v to i32
ret i32 %r ret i32 %r
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load i8* %__0, align 1 ; CHECK-NEXT: %__1 = load i8, i8* %__0, align 1
; CHECK-NEXT: %__2 = sext i8 %__1 to i32 ; CHECK-NEXT: %__2 = sext i8 %__1 to i32
; CHECK-NEXT: ret i32 %__2 ; CHECK-NEXT: ret i32 %__2
} }
...@@ -22,12 +22,12 @@ entry: ...@@ -22,12 +22,12 @@ entry:
define i32 @load_i16(i32 %addr) { define i32 @load_i16(i32 %addr) {
entry: entry:
%addr_i16 = inttoptr i32 %addr to i16* %addr_i16 = inttoptr i32 %addr to i16*
%v = load i16* %addr_i16, align 1 %v = load i16, i16* %addr_i16, align 1
%r = sext i16 %v to i32 %r = sext i16 %v to i32
ret i32 %r ret i32 %r
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load i16* %__0, align 1 ; CHECK-NEXT: %__1 = load i16, i16* %__0, align 1
; CHECK-NEXT: %__2 = sext i16 %__1 to i32 ; CHECK-NEXT: %__2 = sext i16 %__1 to i32
; CHECK-NEXT: ret i32 %__2 ; CHECK-NEXT: ret i32 %__2
} }
...@@ -35,35 +35,35 @@ entry: ...@@ -35,35 +35,35 @@ entry:
define i32 @load_i32(i32 %addr) { define i32 @load_i32(i32 %addr) {
entry: entry:
%addr_i32 = inttoptr i32 %addr to i32* %addr_i32 = inttoptr i32 %addr to i32*
%v = load i32* %addr_i32, align 1 %v = load i32, i32* %addr_i32, align 1
ret i32 %v ret i32 %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load i32* %__0, align 1 ; CHECK-NEXT: %__1 = load i32, i32* %__0, align 1
; CHECK-NEXT: ret i32 %__1 ; CHECK-NEXT: ret i32 %__1
} }
define i64 @load_i64(i32 %addr) { define i64 @load_i64(i32 %addr) {
entry: entry:
%addr_i64 = inttoptr i32 %addr to i64* %addr_i64 = inttoptr i32 %addr to i64*
%v = load i64* %addr_i64, align 1 %v = load i64, i64* %addr_i64, align 1
ret i64 %v ret i64 %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load i64* %__0, align 1 ; CHECK-NEXT: %__1 = load i64, i64* %__0, align 1
; CHECK-NEXT: ret i64 %__1 ; CHECK-NEXT: ret i64 %__1
} }
define float @load_float_a1(i32 %addr) { define float @load_float_a1(i32 %addr) {
entry: entry:
%addr_float = inttoptr i32 %addr to float* %addr_float = inttoptr i32 %addr to float*
%v = load float* %addr_float, align 1 %v = load float, float* %addr_float, align 1
ret float %v ret float %v
; TODO(kschimpf) Fix load alignment in ICE to allow non-default. ; TODO(kschimpf) Fix load alignment in ICE to allow non-default.
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load float* %__0, align 4 ; CHECK-NEXT: %__1 = load float, float* %__0, align 4
; CHECK-NEXT: ret float %__1 ; CHECK-NEXT: ret float %__1
} }
...@@ -71,24 +71,24 @@ entry: ...@@ -71,24 +71,24 @@ entry:
define float @load_float_a4(i32 %addr) { define float @load_float_a4(i32 %addr) {
entry: entry:
%addr_float = inttoptr i32 %addr to float* %addr_float = inttoptr i32 %addr to float*
%v = load float* %addr_float, align 4 %v = load float, float* %addr_float, align 4
ret float %v ret float %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load float* %__0, align 4 ; CHECK-NEXT: %__1 = load float, float* %__0, align 4
; CHECK-NEXT: ret float %__1 ; CHECK-NEXT: ret float %__1
} }
define double @load_double_a1(i32 %addr) { define double @load_double_a1(i32 %addr) {
entry: entry:
%addr_double = inttoptr i32 %addr to double* %addr_double = inttoptr i32 %addr to double*
%v = load double* %addr_double, align 1 %v = load double, double* %addr_double, align 1
ret double %v ret double %v
; TODO(kschimpf) Fix load alignment in ICE to allow non-default. ; TODO(kschimpf) Fix load alignment in ICE to allow non-default.
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load double* %__0, align 8 ; CHECK-NEXT: %__1 = load double, double* %__0, align 8
; CHECK-NEXT: ret double %__1 ; CHECK-NEXT: ret double %__1
} }
...@@ -96,55 +96,55 @@ entry: ...@@ -96,55 +96,55 @@ entry:
define double @load_double_a8(i32 %addr) { define double @load_double_a8(i32 %addr) {
entry: entry:
%addr_double = inttoptr i32 %addr to double* %addr_double = inttoptr i32 %addr to double*
%v = load double* %addr_double, align 8 %v = load double, double* %addr_double, align 8
ret double %v ret double %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load double* %__0, align 8 ; CHECK-NEXT: %__1 = load double, double* %__0, align 8
; CHECK-NEXT: ret double %__1 ; CHECK-NEXT: ret double %__1
} }
define <16 x i8> @load_v16xI8(i32 %addr) { define <16 x i8> @load_v16xI8(i32 %addr) {
entry: entry:
%addr_v16xI8 = inttoptr i32 %addr to <16 x i8>* %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
%v = load <16 x i8>* %addr_v16xI8, align 1 %v = load <16 x i8>, <16 x i8>* %addr_v16xI8, align 1
ret <16 x i8> %v ret <16 x i8> %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load <16 x i8>* %__0, align 1 ; CHECK-NEXT: %__1 = load <16 x i8>, <16 x i8>* %__0, align 1
; CHECK-NEXT: ret <16 x i8> %__1 ; CHECK-NEXT: ret <16 x i8> %__1
} }
define <8 x i16> @load_v8xI16(i32 %addr) { define <8 x i16> @load_v8xI16(i32 %addr) {
entry: entry:
%addr_v8xI16 = inttoptr i32 %addr to <8 x i16>* %addr_v8xI16 = inttoptr i32 %addr to <8 x i16>*
%v = load <8 x i16>* %addr_v8xI16, align 2 %v = load <8 x i16>, <8 x i16>* %addr_v8xI16, align 2
ret <8 x i16> %v ret <8 x i16> %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load <8 x i16>* %__0, align 2 ; CHECK-NEXT: %__1 = load <8 x i16>, <8 x i16>* %__0, align 2
; CHECK-NEXT: ret <8 x i16> %__1 ; CHECK-NEXT: ret <8 x i16> %__1
} }
define <4 x i32> @load_v4xI32(i32 %addr) { define <4 x i32> @load_v4xI32(i32 %addr) {
entry: entry:
%addr_v4xI32 = inttoptr i32 %addr to <4 x i32>* %addr_v4xI32 = inttoptr i32 %addr to <4 x i32>*
%v = load <4 x i32>* %addr_v4xI32, align 4 %v = load <4 x i32>, <4 x i32>* %addr_v4xI32, align 4
ret <4 x i32> %v ret <4 x i32> %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load <4 x i32>* %__0, align 4 ; CHECK-NEXT: %__1 = load <4 x i32>, <4 x i32>* %__0, align 4
; CHECK-NEXT: ret <4 x i32> %__1 ; CHECK-NEXT: ret <4 x i32> %__1
} }
define <4 x float> @load_v4xFloat(i32 %addr) { define <4 x float> @load_v4xFloat(i32 %addr) {
entry: entry:
%addr_v4xFloat = inttoptr i32 %addr to <4 x float>* %addr_v4xFloat = inttoptr i32 %addr to <4 x float>*
%v = load <4 x float>* %addr_v4xFloat, align 4 %v = load <4 x float>, <4 x float>* %addr_v4xFloat, align 4
ret <4 x float> %v ret <4 x float> %v
; CHECK: __0: ; CHECK: __0:
; CHECK-NEXT: %__1 = load <4 x float>* %__0, align 4 ; CHECK-NEXT: %__1 = load <4 x float>, <4 x float>* %__0, align 4
; CHECK-NEXT: ret <4 x float> %__1 ; CHECK-NEXT: ret <4 x float> %__1
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment