1; RUN: opt < %s -passes=sroa -S | FileCheck %s 2target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n8:16:32:64" 3 4define <4 x i64> @vector_ptrtoint({<2 x ptr>, <2 x ptr>} %x) { 5; CHECK-LABEL: @vector_ptrtoint 6 %a = alloca {<2 x ptr>, <2 x ptr>} 7; CHECK-NOT: alloca 8 9 store {<2 x ptr>, <2 x ptr>} %x, ptr %a 10; CHECK-NOT: store 11 12 %vec = load <4 x i64>, ptr %a 13; CHECK-NOT: load 14; CHECK: ptrtoint 15 16 ret <4 x i64> %vec 17} 18 19define <4 x ptr> @vector_inttoptr({<2 x i64>, <2 x i64>} %x) { 20; CHECK-LABEL: @vector_inttoptr 21 %a = alloca {<2 x i64>, <2 x i64>} 22; CHECK-NOT: alloca 23 24 store {<2 x i64>, <2 x i64>} %x, ptr %a 25; CHECK-NOT: store 26 27 %vec = load <4 x ptr>, ptr %a 28; CHECK-NOT: load 29; CHECK: inttoptr 30 31 ret <4 x ptr> %vec 32} 33 34define <2 x i64> @vector_ptrtointbitcast({<1 x ptr>, <1 x ptr>} %x) { 35; CHECK-LABEL: @vector_ptrtointbitcast( 36 %a = alloca {<1 x ptr>, <1 x ptr>} 37; CHECK-NOT: alloca 38 39 store {<1 x ptr>, <1 x ptr>} %x, ptr %a 40; CHECK-NOT: store 41 42 %vec = load <2 x i64>, ptr %a 43; CHECK-NOT: load 44; CHECK: ptrtoint 45; CHECK: bitcast 46; CHECK: ptrtoint 47; CHECK: bitcast 48 49 ret <2 x i64> %vec 50} 51 52define <2 x ptr> @vector_inttoptrbitcast_vector({<16 x i8>, <16 x i8>} %x) { 53; CHECK-LABEL: @vector_inttoptrbitcast_vector( 54 %a = alloca {<16 x i8>, <16 x i8>} 55; CHECK-NOT: alloca 56 57 store {<16 x i8>, <16 x i8>} %x, ptr %a 58; CHECK-NOT: store 59 60 %vec = load <2 x ptr>, ptr %a 61; CHECK-NOT: load 62; CHECK: extractvalue 63; CHECK: extractvalue 64; CHECK: bitcast 65; CHECK: inttoptr 66 67 ret <2 x ptr> %vec 68} 69 70define <16 x i8> @vector_ptrtointbitcast_vector({<2 x ptr>, <2 x ptr>} %x) { 71; CHECK-LABEL: @vector_ptrtointbitcast_vector( 72 %a = alloca {<2 x ptr>, <2 x ptr>} 73; CHECK-NOT: alloca 74 75 store {<2 x ptr>, <2 x ptr>} %x, ptr %a 76; CHECK-NOT: store 77 78 %vec = load <16 x i8>, ptr %a 79; CHECK-NOT: load 80; CHECK: extractvalue 81; CHECK: ptrtoint 82; CHECK: bitcast 83; CHECK: extractvalue 84 85 ret <16 x i8> %vec 86} 87