brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.6 KiB · 88b6ea4 Raw
734 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=aarch64--linux-gnu | FileCheck %s3 4 5; i86 7define <16 x i8> @insert_v16i8_2_1(float %tmp, <16 x i8> %b, <16 x i8> %a) {8; CHECK-LABEL: insert_v16i8_2_1:9; CHECK:       // %bb.0:10; CHECK-NEXT:    mov v0.16b, v1.16b11; CHECK-NEXT:    mov v0.h[0], v2.h[0]12; CHECK-NEXT:    ret13  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 1, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>14  ret <16 x i8> %s215}16 17define <16 x i8> @insert_v16i8_2_2(float %tmp, <16 x i8> %b, <16 x i8> %a) {18; CHECK-LABEL: insert_v16i8_2_2:19; CHECK:       // %bb.0:20; CHECK-NEXT:    mov v0.16b, v1.16b21; CHECK-NEXT:    mov v0.h[1], v2.h[0]22; CHECK-NEXT:    ret23  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 0, i32 1, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>24  ret <16 x i8> %s225}26 27define <16 x i8> @insert_v16i8_2_6(float %tmp, <16 x i8> %b, <16 x i8> %a) {28; CHECK-LABEL: insert_v16i8_2_6:29; CHECK:       // %bb.0:30; CHECK-NEXT:    mov v0.16b, v1.16b31; CHECK-NEXT:    mov v0.h[6], v2.h[0]32; CHECK-NEXT:    ret33  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 0, i32 1, i32 30, i32 31>34  ret <16 x i8> %s235}36 37define <16 x i8> @insert_v16i8_4_1(float %tmp, <16 x i8> %b, <16 x i8> %a) {38; CHECK-LABEL: insert_v16i8_4_1:39; CHECK:       // %bb.0:40; CHECK-NEXT:    mov v0.16b, v1.16b41; CHECK-NEXT:    mov v0.s[0], v2.s[0]42; CHECK-NEXT:    ret43  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>44  ret <16 x i8> %s245}46 47define <16 x i8> @insert_v16i8_4_15(float %tmp, <16 x i8> %b, <16 x i8> %a) {48; CHECK-LABEL: insert_v16i8_4_15:49; CHECK:       // %bb.0:50; CHECK-NEXT:    // kill: def $q2 killed $q2 def $q2_q351; CHECK-NEXT:    adrp x8, .LCPI4_052; CHECK-NEXT:    mov v3.16b, v1.16b53; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI4_0]54; CHECK-NEXT:    tbl v0.16b, { v2.16b, v3.16b }, v0.16b55; CHECK-NEXT:    ret56  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 0, i32 1, i32 2, i32 3, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>57  ret <16 x i8> %s258}59 60define <16 x i8> @insert_v16i8_4_2(float %tmp, <16 x i8> %b, <16 x i8> %a) {61; CHECK-LABEL: insert_v16i8_4_2:62; CHECK:       // %bb.0:63; CHECK-NEXT:    mov v0.16b, v1.16b64; CHECK-NEXT:    mov v0.s[1], v2.s[0]65; CHECK-NEXT:    ret66  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 0, i32 1, i32 2, i32 3, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>67  ret <16 x i8> %s268}69 70define <16 x i8> @insert_v16i8_4_3(float %tmp, <16 x i8> %b, <16 x i8> %a) {71; CHECK-LABEL: insert_v16i8_4_3:72; CHECK:       // %bb.0:73; CHECK-NEXT:    mov v0.16b, v1.16b74; CHECK-NEXT:    mov v0.s[2], v2.s[0]75; CHECK-NEXT:    ret76  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 1, i32 2, i32 3, i32 28, i32 29, i32 30, i32 31>77  ret <16 x i8> %s278}79 80define <16 x i8> @insert_v16i8_4_4(float %tmp, <16 x i8> %b, <16 x i8> %a) {81; CHECK-LABEL: insert_v16i8_4_4:82; CHECK:       // %bb.0:83; CHECK-NEXT:    mov v0.16b, v1.16b84; CHECK-NEXT:    mov v0.s[3], v2.s[0]85; CHECK-NEXT:    ret86  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 0, i32 1, i32 2, i32 3>87  ret <16 x i8> %s288}89 90define <8 x i8> @insert_v8i8_4_1(float %tmp, <8 x i8> %b, <8 x i8> %a) {91; CHECK-LABEL: insert_v8i8_4_1:92; CHECK:       // %bb.0:93; CHECK-NEXT:    fmov d0, d294; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q195; CHECK-NEXT:    mov v0.s[1], v1.s[1]96; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q097; CHECK-NEXT:    ret98  %s2 = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>99  ret <8 x i8> %s2100}101 102define <8 x i8> @insert_v8i8_4_2(float %tmp, <8 x i8> %b, <8 x i8> %a) {103; CHECK-LABEL: insert_v8i8_4_2:104; CHECK:       // %bb.0:105; CHECK-NEXT:    zip1 v0.2s, v1.2s, v2.2s106; CHECK-NEXT:    ret107  %s2 = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 2, i32 3>108  ret <8 x i8> %s2109}110 111define <16 x i8> @insert_v16i8_8_1(float %tmp, <16 x i8> %b, <16 x i8> %a) {112; CHECK-LABEL: insert_v16i8_8_1:113; CHECK:       // %bb.0:114; CHECK-NEXT:    mov v0.16b, v2.16b115; CHECK-NEXT:    mov v0.d[1], v1.d[1]116; CHECK-NEXT:    ret117  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>118  ret <16 x i8> %s2119}120 121define <16 x i8> @insert_v16i8_8_2(float %tmp, <16 x i8> %b, <16 x i8> %a) {122; CHECK-LABEL: insert_v16i8_8_2:123; CHECK:       // %bb.0:124; CHECK-NEXT:    zip1 v0.2d, v1.2d, v2.2d125; CHECK-NEXT:    ret126  %s2 = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>127  ret <16 x i8> %s2128}129 130; i16131 132define <8 x i16> @insert_v8i16_2_1(float %tmp, <8 x i16> %b, <8 x i16> %a) {133; CHECK-LABEL: insert_v8i16_2_1:134; CHECK:       // %bb.0:135; CHECK-NEXT:    mov v0.16b, v1.16b136; CHECK-NEXT:    mov v0.s[0], v2.s[0]137; CHECK-NEXT:    ret138  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>139  ret <8 x i16> %s2140}141 142define <8 x i16> @insert_v8i16_2_15(float %tmp, <8 x i16> %b, <8 x i16> %a) {143; CHECK-LABEL: insert_v8i16_2_15:144; CHECK:       // %bb.0:145; CHECK-NEXT:    // kill: def $q2 killed $q2 def $q2_q3146; CHECK-NEXT:    adrp x8, .LCPI13_0147; CHECK-NEXT:    mov v3.16b, v1.16b148; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI13_0]149; CHECK-NEXT:    tbl v0.16b, { v2.16b, v3.16b }, v0.16b150; CHECK-NEXT:    ret151  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 8, i32 0, i32 1, i32 11, i32 12, i32 13, i32 14, i32 15>152  ret <8 x i16> %s2153}154 155define <8 x i16> @insert_v8i16_2_2(float %tmp, <8 x i16> %b, <8 x i16> %a) {156; CHECK-LABEL: insert_v8i16_2_2:157; CHECK:       // %bb.0:158; CHECK-NEXT:    mov v0.16b, v1.16b159; CHECK-NEXT:    mov v0.s[1], v2.s[0]160; CHECK-NEXT:    ret161  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 0, i32 1, i32 12, i32 13, i32 14, i32 15>162  ret <8 x i16> %s2163}164 165define <8 x i16> @insert_v8i16_2_3(float %tmp, <8 x i16> %b, <8 x i16> %a) {166; CHECK-LABEL: insert_v8i16_2_3:167; CHECK:       // %bb.0:168; CHECK-NEXT:    mov v0.16b, v1.16b169; CHECK-NEXT:    mov v0.s[2], v2.s[0]170; CHECK-NEXT:    ret171  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 14, i32 15>172  ret <8 x i16> %s2173}174 175define <8 x i16> @insert_v8i16_2_4(float %tmp, <8 x i16> %b, <8 x i16> %a) {176; CHECK-LABEL: insert_v8i16_2_4:177; CHECK:       // %bb.0:178; CHECK-NEXT:    mov v0.16b, v1.16b179; CHECK-NEXT:    mov v0.s[3], v2.s[0]180; CHECK-NEXT:    ret181  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 0, i32 1>182  ret <8 x i16> %s2183}184 185define <4 x i16> @insert_v4i16_2_1(float %tmp, <4 x i16> %b, <4 x i16> %a) {186; CHECK-LABEL: insert_v4i16_2_1:187; CHECK:       // %bb.0:188; CHECK-NEXT:    fmov d0, d2189; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1190; CHECK-NEXT:    mov v0.s[1], v1.s[1]191; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0192; CHECK-NEXT:    ret193  %s2 = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 7>194  ret <4 x i16> %s2195}196 197define <4 x i16> @insert_v4i16_2_2(float %tmp, <4 x i16> %b, <4 x i16> %a) {198; CHECK-LABEL: insert_v4i16_2_2:199; CHECK:       // %bb.0:200; CHECK-NEXT:    zip1 v0.2s, v1.2s, v2.2s201; CHECK-NEXT:    ret202  %s2 = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 4, i32 5, i32 0, i32 1>203  ret <4 x i16> %s2204}205 206define <8 x i16> @insert_v8i16_4_1(float %tmp, <8 x i16> %b, <8 x i16> %a) {207; CHECK-LABEL: insert_v8i16_4_1:208; CHECK:       // %bb.0:209; CHECK-NEXT:    mov v0.16b, v2.16b210; CHECK-NEXT:    mov v0.d[1], v1.d[1]211; CHECK-NEXT:    ret212  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>213  ret <8 x i16> %s2214}215 216define <8 x i16> @insert_v8i16_4_2(float %tmp, <8 x i16> %b, <8 x i16> %a) {217; CHECK-LABEL: insert_v8i16_4_2:218; CHECK:       // %bb.0:219; CHECK-NEXT:    zip1 v0.2d, v1.2d, v2.2d220; CHECK-NEXT:    ret221  %s2 = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 2, i32 3>222  ret <8 x i16> %s2223}224 225; i32226 227define <4 x i32> @insert_v4i32_2_1(float %tmp, <4 x i32> %b, <4 x i32> %a) {228; CHECK-LABEL: insert_v4i32_2_1:229; CHECK:       // %bb.0:230; CHECK-NEXT:    mov v0.16b, v2.16b231; CHECK-NEXT:    mov v0.d[1], v1.d[1]232; CHECK-NEXT:    ret233  %s2 = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 7>234  ret <4 x i32> %s2235}236 237define <4 x i32> @insert_v4i32_2_2(float %tmp, <4 x i32> %b, <4 x i32> %a) {238; CHECK-LABEL: insert_v4i32_2_2:239; CHECK:       // %bb.0:240; CHECK-NEXT:    zip1 v0.2d, v1.2d, v2.2d241; CHECK-NEXT:    ret242  %s2 = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 4, i32 5, i32 0, i32 1>243  ret <4 x i32> %s2244}245 246 247 248 249; i8250 251define <16 x i8> @load_v16i8_4_1(float %tmp, <16 x i8> %b, ptr %a) {252; CHECK-LABEL: load_v16i8_4_1:253; CHECK:       // %bb.0:254; CHECK-NEXT:    mov v0.16b, v1.16b255; CHECK-NEXT:    ld1 { v0.s }[0], [x0]256; CHECK-NEXT:    ret257  %l = load <4 x i8>, ptr %a258  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>259  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>260  ret <16 x i8> %s2261}262 263define <16 x i8> @load_v16i8_4_15(float %tmp, <16 x i8> %b, ptr %a) {264; CHECK-LABEL: load_v16i8_4_15:265; CHECK:       // %bb.0:266; CHECK-NEXT:    // kill: def $q1 killed $q1 def $q0_q1267; CHECK-NEXT:    adrp x8, .LCPI24_0268; CHECK-NEXT:    ldr s0, [x0]269; CHECK-NEXT:    ldr q2, [x8, :lo12:.LCPI24_0]270; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b }, v2.16b271; CHECK-NEXT:    ret272  %l = load <4 x i8>, ptr %a273  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>274  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 0, i32 1, i32 2, i32 3, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>275  ret <16 x i8> %s2276}277 278define <16 x i8> @load_v16i8_4_2(float %tmp, <16 x i8> %b, ptr %a) {279; CHECK-LABEL: load_v16i8_4_2:280; CHECK:       // %bb.0:281; CHECK-NEXT:    mov v0.16b, v1.16b282; CHECK-NEXT:    ld1 { v0.s }[1], [x0]283; CHECK-NEXT:    ret284  %l = load <4 x i8>, ptr %a285  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>286  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 0, i32 1, i32 2, i32 3, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>287  ret <16 x i8> %s2288}289 290define <16 x i8> @load_v16i8_4_3(float %tmp, <16 x i8> %b, ptr %a) {291; CHECK-LABEL: load_v16i8_4_3:292; CHECK:       // %bb.0:293; CHECK-NEXT:    mov v0.16b, v1.16b294; CHECK-NEXT:    ld1 { v0.s }[2], [x0]295; CHECK-NEXT:    ret296  %l = load <4 x i8>, ptr %a297  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>298  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 1, i32 2, i32 3, i32 28, i32 29, i32 30, i32 31>299  ret <16 x i8> %s2300}301 302define <16 x i8> @load_v16i8_4_4(float %tmp, <16 x i8> %b, ptr %a) {303; CHECK-LABEL: load_v16i8_4_4:304; CHECK:       // %bb.0:305; CHECK-NEXT:    mov v0.16b, v1.16b306; CHECK-NEXT:    ld1 { v0.s }[3], [x0]307; CHECK-NEXT:    ret308  %l = load <4 x i8>, ptr %a309  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>310  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 0, i32 1, i32 2, i32 3>311  ret <16 x i8> %s2312}313 314define <8 x i8> @load_v8i8_4_1(float %tmp, <8 x i8> %b, ptr %a) {315; CHECK-LABEL: load_v8i8_4_1:316; CHECK:       // %bb.0:317; CHECK-NEXT:    ldr s0, [x0]318; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1319; CHECK-NEXT:    mov v0.s[1], v1.s[1]320; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0321; CHECK-NEXT:    ret322  %l = load <4 x i8>, ptr %a323  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>324  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>325  ret <8 x i8> %s2326}327 328define <8 x i8> @load_v8i8_4_2(float %tmp, <8 x i8> %b, ptr %a) {329; CHECK-LABEL: load_v8i8_4_2:330; CHECK:       // %bb.0:331; CHECK-NEXT:    ldr s0, [x0]332; CHECK-NEXT:    zip1 v0.2s, v1.2s, v0.2s333; CHECK-NEXT:    ret334  %l = load <4 x i8>, ptr %a335  %s1 = shufflevector <4 x i8> %l, <4 x i8> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>336  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 2, i32 3>337  ret <8 x i8> %s2338}339 340define <16 x i8> @load_v16i8_8_1(float %tmp, <16 x i8> %b, ptr %a) {341; CHECK-LABEL: load_v16i8_8_1:342; CHECK:       // %bb.0:343; CHECK-NEXT:    ext v1.16b, v1.16b, v1.16b, #8344; CHECK-NEXT:    ldr d0, [x0]345; CHECK-NEXT:    mov v0.d[1], v1.d[0]346; CHECK-NEXT:    ret347  %l = load <8 x i8>, ptr %a348  %s1 = shufflevector <8 x i8> %l, <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>349  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>350  ret <16 x i8> %s2351}352 353define <16 x i8> @load_v16i8_8_2(float %tmp, <16 x i8> %b, ptr %a) {354; CHECK-LABEL: load_v16i8_8_2:355; CHECK:       // %bb.0:356; CHECK-NEXT:    mov v0.16b, v1.16b357; CHECK-NEXT:    ldr d2, [x0]358; CHECK-NEXT:    mov v0.d[1], v2.d[0]359; CHECK-NEXT:    ret360  %l = load <8 x i8>, ptr %a361  %s1 = shufflevector <8 x i8> %l, <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>362  %s2 = shufflevector <16 x i8> %s1, <16 x i8> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>363  ret <16 x i8> %s2364}365 366define <8 x i8> @load_v8i8_2_1(float %tmp, <8 x i8> %b, ptr %a) {367; CHECK-LABEL: load_v8i8_2_1:368; CHECK:       // %bb.0:369; CHECK-NEXT:    fmov d0, d1370; CHECK-NEXT:    ldr h2, [x0]371; CHECK-NEXT:    mov v0.h[0], v2.h[0]372; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0373; CHECK-NEXT:    ret374  %l = load <2 x i8>, ptr %a375  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>376  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 0, i32 1, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>377  ret <8 x i8> %s2378}379 380define <8 x i8> @load_v8i8_2_15(float %tmp, <8 x i8> %b, ptr %a) {381; CHECK-LABEL: load_v8i8_2_15:382; CHECK:       // %bb.0:383; CHECK-NEXT:    ldr h0, [x0]384; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1385; CHECK-NEXT:    adrp x8, .LCPI33_0386; CHECK-NEXT:    mov v0.d[1], v1.d[0]387; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI33_0]388; CHECK-NEXT:    tbl v0.8b, { v0.16b }, v1.8b389; CHECK-NEXT:    ret390  %l = load <2 x i8>, ptr %a391  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>392  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 8, i32 0, i32 1, i32 11, i32 12, i32 13, i32 14, i32 15>393  ret <8 x i8> %s2394}395 396define <8 x i8> @load_v8i8_2_2(float %tmp, <8 x i8> %b, ptr %a) {397; CHECK-LABEL: load_v8i8_2_2:398; CHECK:       // %bb.0:399; CHECK-NEXT:    fmov d0, d1400; CHECK-NEXT:    ldr h2, [x0]401; CHECK-NEXT:    mov v0.h[1], v2.h[0]402; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0403; CHECK-NEXT:    ret404  %l = load <2 x i8>, ptr %a405  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>406  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 8, i32 9, i32 0, i32 1, i32 12, i32 13, i32 14, i32 15>407  ret <8 x i8> %s2408}409 410define <8 x i8> @load_v8i8_2_3(float %tmp, <8 x i8> %b, ptr %a) {411; CHECK-LABEL: load_v8i8_2_3:412; CHECK:       // %bb.0:413; CHECK-NEXT:    fmov d0, d1414; CHECK-NEXT:    ldr h2, [x0]415; CHECK-NEXT:    mov v0.h[2], v2.h[0]416; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0417; CHECK-NEXT:    ret418  %l = load <2 x i8>, ptr %a419  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>420  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 14, i32 15>421  ret <8 x i8> %s2422}423 424define <8 x i8> @load_v8i8_2_4(float %tmp, <8 x i8> %b, ptr %a) {425; CHECK-LABEL: load_v8i8_2_4:426; CHECK:       // %bb.0:427; CHECK-NEXT:    fmov d0, d1428; CHECK-NEXT:    ldr h2, [x0]429; CHECK-NEXT:    mov v0.h[3], v2.h[0]430; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0431; CHECK-NEXT:    ret432  %l = load <2 x i8>, ptr %a433  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>434  %s2 = shufflevector <8 x i8> %s1, <8 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 0, i32 1>435  ret <8 x i8> %s2436}437 438define <4 x i8> @load_v4i8_2_1(float %tmp, <4 x i8> %b, ptr %a) {439; CHECK-LABEL: load_v4i8_2_1:440; CHECK:       // %bb.0:441; CHECK-NEXT:    ldr h0, [x0]442; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1443; CHECK-NEXT:    zip1 v0.8b, v0.8b, v0.8b444; CHECK-NEXT:    mov v0.s[1], v1.s[1]445; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0446; CHECK-NEXT:    ret447  %l = load <2 x i8>, ptr %a448  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>449  %s2 = shufflevector <4 x i8> %s1, <4 x i8> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 7>450  ret <4 x i8> %s2451}452 453define <4 x i8> @load_v4i8_2_2(float %tmp, <4 x i8> %b, ptr %a) {454; CHECK-LABEL: load_v4i8_2_2:455; CHECK:       // %bb.0:456; CHECK-NEXT:    ldr h0, [x0]457; CHECK-NEXT:    zip1 v0.8b, v0.8b, v0.8b458; CHECK-NEXT:    zip1 v0.2s, v1.2s, v0.2s459; CHECK-NEXT:    ret460  %l = load <2 x i8>, ptr %a461  %s1 = shufflevector <2 x i8> %l, <2 x i8> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>462  %s2 = shufflevector <4 x i8> %s1, <4 x i8> %b, <4 x i32> <i32 4, i32 5, i32 0, i32 1>463  ret <4 x i8> %s2464}465 466; i16467 468define <8 x i16> @load_v8i16_2_1(float %tmp, <8 x i16> %b, ptr %a) {469; CHECK-LABEL: load_v8i16_2_1:470; CHECK:       // %bb.0:471; CHECK-NEXT:    mov v0.16b, v1.16b472; CHECK-NEXT:    ld1 { v0.s }[0], [x0]473; CHECK-NEXT:    ret474  %l = load <2 x i16>, ptr %a475  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>476  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>477  ret <8 x i16> %s2478}479 480define <8 x i16> @load_v8i16_2_15(float %tmp, <8 x i16> %b, ptr %a) {481; CHECK-LABEL: load_v8i16_2_15:482; CHECK:       // %bb.0:483; CHECK-NEXT:    // kill: def $q1 killed $q1 def $q0_q1484; CHECK-NEXT:    adrp x8, .LCPI40_0485; CHECK-NEXT:    ldr s0, [x0]486; CHECK-NEXT:    ldr q2, [x8, :lo12:.LCPI40_0]487; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b }, v2.16b488; CHECK-NEXT:    ret489  %l = load <2 x i16>, ptr %a490  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>491  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 8, i32 0, i32 1, i32 11, i32 12, i32 13, i32 14, i32 15>492  ret <8 x i16> %s2493}494 495define <8 x i16> @load_v8i16_2_2(float %tmp, <8 x i16> %b, ptr %a) {496; CHECK-LABEL: load_v8i16_2_2:497; CHECK:       // %bb.0:498; CHECK-NEXT:    mov v0.16b, v1.16b499; CHECK-NEXT:    ld1 { v0.s }[1], [x0]500; CHECK-NEXT:    ret501  %l = load <2 x i16>, ptr %a502  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>503  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 0, i32 1, i32 12, i32 13, i32 14, i32 15>504  ret <8 x i16> %s2505}506 507define <8 x i16> @load_v8i16_2_3(float %tmp, <8 x i16> %b, ptr %a) {508; CHECK-LABEL: load_v8i16_2_3:509; CHECK:       // %bb.0:510; CHECK-NEXT:    mov v0.16b, v1.16b511; CHECK-NEXT:    ld1 { v0.s }[2], [x0]512; CHECK-NEXT:    ret513  %l = load <2 x i16>, ptr %a514  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>515  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 14, i32 15>516  ret <8 x i16> %s2517}518 519define <8 x i16> @load_v8i16_2_4(float %tmp, <8 x i16> %b, ptr %a) {520; CHECK-LABEL: load_v8i16_2_4:521; CHECK:       // %bb.0:522; CHECK-NEXT:    mov v0.16b, v1.16b523; CHECK-NEXT:    ld1 { v0.s }[3], [x0]524; CHECK-NEXT:    ret525  %l = load <2 x i16>, ptr %a526  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>527  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 0, i32 1>528  ret <8 x i16> %s2529}530 531define <4 x i16> @load_v4i16_2_1(float %tmp, <4 x i16> %b, ptr %a) {532; CHECK-LABEL: load_v4i16_2_1:533; CHECK:       // %bb.0:534; CHECK-NEXT:    ldr s0, [x0]535; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1536; CHECK-NEXT:    mov v0.s[1], v1.s[1]537; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0538; CHECK-NEXT:    ret539  %l = load <2 x i16>, ptr %a540  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>541  %s2 = shufflevector <4 x i16> %s1, <4 x i16> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 7>542  ret <4 x i16> %s2543}544 545define <4 x i16> @load_v4i16_2_2(float %tmp, <4 x i16> %b, ptr %a) {546; CHECK-LABEL: load_v4i16_2_2:547; CHECK:       // %bb.0:548; CHECK-NEXT:    ldr s0, [x0]549; CHECK-NEXT:    zip1 v0.2s, v1.2s, v0.2s550; CHECK-NEXT:    ret551  %l = load <2 x i16>, ptr %a552  %s1 = shufflevector <2 x i16> %l, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>553  %s2 = shufflevector <4 x i16> %s1, <4 x i16> %b, <4 x i32> <i32 4, i32 5, i32 0, i32 1>554  ret <4 x i16> %s2555}556 557define <8 x i16> @load_v8i16_4_1(float %tmp, <8 x i16> %b, ptr %a) {558; CHECK-LABEL: load_v8i16_4_1:559; CHECK:       // %bb.0:560; CHECK-NEXT:    ext v1.16b, v1.16b, v1.16b, #8561; CHECK-NEXT:    ldr d0, [x0]562; CHECK-NEXT:    mov v0.d[1], v1.d[0]563; CHECK-NEXT:    ret564  %l = load <4 x i16>, ptr %a565  %s1 = shufflevector <4 x i16> %l, <4 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>566  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>567  ret <8 x i16> %s2568}569 570define <8 x i16> @load_v8i16_4_2(float %tmp, <8 x i16> %b, ptr %a) {571; CHECK-LABEL: load_v8i16_4_2:572; CHECK:       // %bb.0:573; CHECK-NEXT:    mov v0.16b, v1.16b574; CHECK-NEXT:    ldr d2, [x0]575; CHECK-NEXT:    mov v0.d[1], v2.d[0]576; CHECK-NEXT:    ret577  %l = load <4 x i16>, ptr %a578  %s1 = shufflevector <4 x i16> %l, <4 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>579  %s2 = shufflevector <8 x i16> %s1, <8 x i16> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 0, i32 1, i32 2, i32 3>580  ret <8 x i16> %s2581}582 583; i32584 585define <4 x i32> @load_v4i32_2_1(float %tmp, <4 x i32> %b, ptr %a) {586; CHECK-LABEL: load_v4i32_2_1:587; CHECK:       // %bb.0:588; CHECK-NEXT:    ext v1.16b, v1.16b, v1.16b, #8589; CHECK-NEXT:    ldr d0, [x0]590; CHECK-NEXT:    mov v0.d[1], v1.d[0]591; CHECK-NEXT:    ret592  %l = load <2 x i32>, ptr %a593  %s1 = shufflevector <2 x i32> %l, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>594  %s2 = shufflevector <4 x i32> %s1, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 7>595  ret <4 x i32> %s2596}597 598define <4 x i32> @load_v4i32_2_2(float %tmp, <4 x i32> %b, ptr %a) {599; CHECK-LABEL: load_v4i32_2_2:600; CHECK:       // %bb.0:601; CHECK-NEXT:    mov v0.16b, v1.16b602; CHECK-NEXT:    ldr d2, [x0]603; CHECK-NEXT:    mov v0.d[1], v2.d[0]604; CHECK-NEXT:    ret605  %l = load <2 x i32>, ptr %a606  %s1 = shufflevector <2 x i32> %l, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>607  %s2 = shufflevector <4 x i32> %s1, <4 x i32> %b, <4 x i32> <i32 4, i32 5, i32 0, i32 1>608  ret <4 x i32> %s2609}610 611; More than a single vector612 613define <8 x i8> @load2_v4i8(float %tmp, ptr %a, ptr %b) {614; CHECK-LABEL: load2_v4i8:615; CHECK:       // %bb.0:616; CHECK-NEXT:    ldr s0, [x0]617; CHECK-NEXT:    ld1 { v0.s }[1], [x1]618; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0619; CHECK-NEXT:    ret620  %la = load <4 x i8>, ptr %a621  %lb = load <4 x i8>, ptr %b622  %s1 = shufflevector <4 x i8> %la, <4 x i8> %lb, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>623  ret <8 x i8> %s1624}625 626define <16 x i8> @load3_v4i8(float %tmp, ptr %a, ptr %b) {627; CHECK-LABEL: load3_v4i8:628; CHECK:       // %bb.0:629; CHECK-NEXT:    ldp s0, s1, [x0]630; CHECK-NEXT:    ld1 { v0.s }[1], [x1]631; CHECK-NEXT:    mov v0.d[1], v1.d[0]632; CHECK-NEXT:    ret633  %la = load <4 x i8>, ptr %a634  %lb = load <4 x i8>, ptr %b635  %c = getelementptr <4 x i8>, ptr %a, i64 1636  %d = getelementptr <4 x i8>, ptr %b, i64 1637  %lc = load <4 x i8>, ptr %c638  %s1 = shufflevector <4 x i8> %la, <4 x i8> %lb, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>639  %s2 = shufflevector <4 x i8> %lc, <4 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>640  %s3 = shufflevector <8 x i8> %s1, <8 x i8> %s2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>641  ret <16 x i8> %s3642}643 644define <16 x i8> @load4_v4i8(float %tmp, ptr %a, ptr %b) {645; CHECK-LABEL: load4_v4i8:646; CHECK:       // %bb.0:647; CHECK-NEXT:    ldp s0, s1, [x0]648; CHECK-NEXT:    ld1 { v0.s }[1], [x1], #4649; CHECK-NEXT:    ld1 { v1.s }[1], [x1]650; CHECK-NEXT:    mov v0.d[1], v1.d[0]651; CHECK-NEXT:    ret652  %la = load <4 x i8>, ptr %a653  %lb = load <4 x i8>, ptr %b654  %c = getelementptr <4 x i8>, ptr %a, i64 1655  %d = getelementptr <4 x i8>, ptr %b, i64 1656  %lc = load <4 x i8>, ptr %c657  %ld = load <4 x i8>, ptr %d658  %s1 = shufflevector <4 x i8> %la, <4 x i8> %lb, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>659  %s2 = shufflevector <4 x i8> %lc, <4 x i8> %ld, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>660  %s3 = shufflevector <8 x i8> %s1, <8 x i8> %s2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>661  ret <16 x i8> %s3662}663 664define <16 x i8> @load2multi1_v4i8(float %tmp, ptr %a, ptr %b) {665; CHECK-LABEL: load2multi1_v4i8:666; CHECK:       // %bb.0:667; CHECK-NEXT:    ldr s0, [x0]668; CHECK-NEXT:    ld1 { v0.s }[1], [x1]669; CHECK-NEXT:    mov v0.d[1], v0.d[0]670; CHECK-NEXT:    ret671  %la = load <4 x i8>, ptr %a672  %lb = load <4 x i8>, ptr %b673  %s1 = shufflevector <4 x i8> %la, <4 x i8> %lb, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>674  %s3 = shufflevector <8 x i8> %s1, <8 x i8> %s1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>675  ret <16 x i8> %s3676}677 678define <16 x i8> @load2multi2_v4i8(float %tmp, ptr %a, ptr %b) {679; CHECK-LABEL: load2multi2_v4i8:680; CHECK:       // %bb.0:681; CHECK-NEXT:    ldr s0, [x0]682; CHECK-NEXT:    ldr s1, [x1]683; CHECK-NEXT:    ushll v0.8h, v0.8b, #0684; CHECK-NEXT:    ushll v1.8h, v1.8b, #0685; CHECK-NEXT:    mov v1.d[1], v1.d[0]686; CHECK-NEXT:    mov v0.d[1], v0.d[0]687; CHECK-NEXT:    uzp1 v0.16b, v0.16b, v1.16b688; CHECK-NEXT:    ret689  %la = load <4 x i8>, ptr %a690  %lb = load <4 x i8>, ptr %b691  %s1 = shufflevector <4 x i8> %la, <4 x i8> %la, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>692  %s2 = shufflevector <4 x i8> %lb, <4 x i8> %lb, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>693  %s3 = shufflevector <8 x i8> %s1, <8 x i8> %s2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>694  ret <16 x i8> %s3695}696 697define void @loads_before_stores(ptr %i44) {698; CHECK-LABEL: loads_before_stores:699; CHECK:       // %bb.0: // %bb700; CHECK-NEXT:    ldr s0, [x0, #28]701; CHECK-NEXT:    add x8, x0, #20702; CHECK-NEXT:    ldrh w9, [x0, #26]703; CHECK-NEXT:    ldrh w10, [x0, #24]704; CHECK-NEXT:    ld1 { v0.s }[1], [x8]705; CHECK-NEXT:    strh w9, [x0, #20]706; CHECK-NEXT:    strh w10, [x0, #30]707; CHECK-NEXT:    stur d0, [x0, #22]708; CHECK-NEXT:    ret709bb:710  %i45 = getelementptr inbounds i8, ptr %i44, i64 20711  %i46 = getelementptr inbounds i8, ptr %i44, i64 26712  %i48 = load i8, ptr %i46, align 1713  %i49 = getelementptr inbounds i8, ptr %i44, i64 21714  %i50 = getelementptr inbounds i8, ptr %i44, i64 27715  %i52 = load i8, ptr %i50, align 1716  %i53 = getelementptr inbounds i8, ptr %i44, i64 22717  %i54 = getelementptr inbounds i8, ptr %i44, i64 28718  %i61 = getelementptr inbounds i8, ptr %i44, i64 24719  %i62 = getelementptr inbounds i8, ptr %i44, i64 30720  %i63 = load i8, ptr %i61, align 1721  %i65 = getelementptr inbounds i8, ptr %i44, i64 25722  %i66 = getelementptr inbounds i8, ptr %i44, i64 31723  %i67 = load i8, ptr %i65, align 1724  %0 = load <4 x i8>, ptr %i45, align 1725  store i8 %i48, ptr %i45, align 1726  store i8 %i52, ptr %i49, align 1727  %1 = load <4 x i8>, ptr %i54, align 1728  store i8 %i63, ptr %i62, align 1729  %2 = shufflevector <4 x i8> %1, <4 x i8> %0, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>730  store <8 x i8> %2, ptr %i53, align 1731  store i8 %i67, ptr %i66, align 1732  ret void733}734