brintos

brintos / llvm-project-archived public Read only

0
0
Text · 37.5 KiB · fb571ef Raw
761 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 < %s | FileCheck %s3 4; CHECK: .LCPI0_0:5; CHECK: 	.byte	0                               // 0x06; CHECK: 	.byte	16                              // 0x107; CHECK: 	.byte	32                              // 0x208; CHECK: 	.byte	48                              // 0x309; CHECK: 	.byte	2                               // 0x210; CHECK: 	.byte	18                              // 0x1211; CHECK: 	.byte	34                              // 0x2212; CHECK: 	.byte	50                              // 0x3213; CHECK: 	.byte	4                               // 0x414; CHECK: 	.byte	20                              // 0x1415; CHECK: 	.byte	36                              // 0x2416; CHECK: 	.byte	52                              // 0x3417; CHECK: 	.byte	6                               // 0x618; CHECK: 	.byte	22                              // 0x1619; CHECK: 	.byte	38                              // 0x2620; CHECK: 	.byte	54                              // 0x3621define <16 x i8> @shuffle4_v4i8_16(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c, <4 x i8> %d) {22; CHECK-LABEL: shuffle4_v4i8_16:23; CHECK:       // %bb.0:24; CHECK-NEXT:    // kill: def $d3 killed $d3 killed $q0_q1_q2_q3 def $q0_q1_q2_q325; CHECK-NEXT:    adrp x8, .LCPI0_026; CHECK-NEXT:    // kill: def $d2 killed $d2 killed $q0_q1_q2_q3 def $q0_q1_q2_q327; CHECK-NEXT:    ldr q4, [x8, :lo12:.LCPI0_0]28; CHECK-NEXT:    // kill: def $d1 killed $d1 killed $q0_q1_q2_q3 def $q0_q1_q2_q329; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0_q1_q2_q3 def $q0_q1_q2_q330; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v4.16b31; CHECK-NEXT:    ret32  %x = shufflevector <4 x i8> %a, <4 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>33  %y = shufflevector <4 x i8> %c, <4 x i8> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>34  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>35  ret <16 x i8> %z36}37 38; CHECK: .LCPI1_0:39; CHECK: 	.byte	0                               // 0x040; CHECK: 	.byte	16                              // 0x1041; CHECK: 	.byte	32                              // 0x2042; CHECK: 	.byte	48                              // 0x3043; CHECK: 	.byte	2                               // 0x244; CHECK: 	.byte	18                              // 0x1245; CHECK: 	.byte	34                              // 0x2246; CHECK: 	.byte	50                              // 0x3247define <8 x i8> @shuffle4_v4i8_8(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c, <4 x i8> %d) {48; CHECK-LABEL: shuffle4_v4i8_8:49; CHECK:       // %bb.0:50; CHECK-NEXT:    // kill: def $d3 killed $d3 killed $q0_q1_q2_q3 def $q0_q1_q2_q351; CHECK-NEXT:    adrp x8, .LCPI1_052; CHECK-NEXT:    // kill: def $d2 killed $d2 killed $q0_q1_q2_q3 def $q0_q1_q2_q353; CHECK-NEXT:    ldr d4, [x8, :lo12:.LCPI1_0]54; CHECK-NEXT:    // kill: def $d1 killed $d1 killed $q0_q1_q2_q3 def $q0_q1_q2_q355; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0_q1_q2_q3 def $q0_q1_q2_q356; CHECK-NEXT:    tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v4.8b57; CHECK-NEXT:    ret58  %x = shufflevector <4 x i8> %a, <4 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>59  %y = shufflevector <4 x i8> %c, <4 x i8> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>60  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13>61  ret <8 x i8> %z62}63 64; CHECK: .LCPI2_0:65; CHECK: 	.byte	0                               // 0x066; CHECK: 	.byte	3                               // 0x367; CHECK: 	.byte	2                               // 0x268; CHECK: 	.byte	1                               // 0x169; CHECK: 	.byte	12                              // 0xc70; CHECK: 	.byte	15                              // 0xf71; CHECK: 	.byte	14                              // 0xe72; CHECK: 	.byte	12                              // 0xc73; CHECK: .LCPI2_1:74; CHECK: 	.byte	4                               // 0x475; CHECK: 	.byte	7                               // 0x776; CHECK: 	.byte	6                               // 0x677; CHECK: 	.byte	7                               // 0x778; CHECK: 	.byte	8                               // 0x879; CHECK: 	.byte	10                              // 0xa80; CHECK: 	.byte	9                               // 0x981; CHECK: 	.byte	11                              // 0xb82; CHECK: 	.section	.rodata.cst16,"aM",@progbits,1683; CHECK: 	.p2align	484; CHECK: .LCPI2_2:85; CHECK: 	.byte	0                               // 0x086; CHECK: 	.byte	4                               // 0x487; CHECK: 	.byte	16                              // 0x1088; CHECK: 	.byte	20                              // 0x1489; CHECK: 	.byte	1                               // 0x190; CHECK: 	.byte	5                               // 0x591; CHECK: 	.byte	17                              // 0x1192; CHECK: 	.byte	21                              // 0x1593; CHECK: 	.byte	2                               // 0x294; CHECK: 	.byte	6                               // 0x695; CHECK: 	.byte	18                              // 0x1296; CHECK: 	.byte	22                              // 0x1697; CHECK: 	.byte	3                               // 0x398; CHECK: 	.byte	7                               // 0x799; CHECK: 	.byte	19                              // 0x13100; CHECK: 	.byte	23                              // 0x17101define <16 x i8> @shuffle4_v8i8(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c, <8 x i8> %d) {102; CHECK-LABEL: shuffle4_v8i8:103; CHECK:       // %bb.0:104; CHECK-NEXT:    // kill: def $d0 killed $d0 def $q0105; CHECK-NEXT:    // kill: def $d2 killed $d2 def $q2106; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1107; CHECK-NEXT:    // kill: def $d3 killed $d3 def $q3108; CHECK-NEXT:    adrp x8, .LCPI2_0109; CHECK-NEXT:    mov v0.d[1], v1.d[0]110; CHECK-NEXT:    mov v2.d[1], v3.d[0]111; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI2_0]112; CHECK-NEXT:    adrp x8, .LCPI2_1113; CHECK-NEXT:    ldr d3, [x8, :lo12:.LCPI2_1]114; CHECK-NEXT:    adrp x8, .LCPI2_2115; CHECK-NEXT:    tbl v0.8b, { v0.16b }, v1.8b116; CHECK-NEXT:    tbl v1.8b, { v2.16b }, v3.8b117; CHECK-NEXT:    ldr q2, [x8, :lo12:.LCPI2_2]118; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b }, v2.16b119; CHECK-NEXT:    ret120  %x = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 3, i32 2, i32 1, i32 12, i32 15, i32 14, i32 12>121  %y = shufflevector <8 x i8> %c, <8 x i8> %d, <8 x i32> <i32 4, i32 7, i32 6, i32 7, i32 8, i32 10, i32 9, i32 11>122  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>123  ret <16 x i8> %z124}125 126; CHECK: .LCPI3_0:127; CHECK: 	.byte	0                               // 0x0128; CHECK: 	.byte	3                               // 0x3129; CHECK: 	.byte	2                               // 0x2130; CHECK: 	.byte	1                               // 0x1131; CHECK: 	.byte	12                              // 0xc132; CHECK: 	.byte	15                              // 0xf133; CHECK: 	.byte	14                              // 0xe134; CHECK: 	.byte	12                              // 0xc135; CHECK: 	.byte	255                             // 0xff136; CHECK: 	.byte	255                             // 0xff137; CHECK: 	.byte	255                             // 0xff138; CHECK: 	.byte	255                             // 0xff139; CHECK: 	.byte	255                             // 0xff140; CHECK: 	.byte	255                             // 0xff141; CHECK: 	.byte	255                             // 0xff142; CHECK: 	.byte	255                             // 0xff143; CHECK: .LCPI3_1:144; CHECK: 	.byte	4                               // 0x4145; CHECK: 	.byte	7                               // 0x7146; CHECK: 	.byte	6                               // 0x6147; CHECK: 	.byte	7                               // 0x7148; CHECK: 	.byte	8                               // 0x8149; CHECK: 	.byte	10                              // 0xa150; CHECK: 	.byte	9                               // 0x9151; CHECK: 	.byte	11                              // 0xb152; CHECK: 	.byte	255                             // 0xff153; CHECK: 	.byte	255                             // 0xff154; CHECK: 	.byte	255                             // 0xff155; CHECK: 	.byte	255                             // 0xff156; CHECK: 	.byte	255                             // 0xff157; CHECK: 	.byte	255                             // 0xff158; CHECK: 	.byte	255                             // 0xff159; CHECK: 	.byte	255                             // 0xff160; CHECK: .LCPI3_2:161; CHECK: 	.byte	16                              // 0x10162; CHECK: 	.byte	20                              // 0x14163; CHECK: 	.byte	0                               // 0x0164; CHECK: 	.byte	4                               // 0x4165; CHECK: 	.byte	17                              // 0x11166; CHECK: 	.byte	21                              // 0x15167; CHECK: 	.byte	1                               // 0x1168; CHECK: 	.byte	5                               // 0x5169; CHECK: 	.byte	18                              // 0x12170; CHECK: 	.byte	22                              // 0x16171; CHECK: 	.byte	2                               // 0x2172; CHECK: 	.byte	6                               // 0x6173; CHECK: 	.byte	19                              // 0x13174; CHECK: 	.byte	23                              // 0x17175; CHECK: 	.byte	3                               // 0x3176; CHECK: 	.byte	7                               // 0x7177define <16 x i8> @shuffle4_v16i8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c, <16 x i8> %d) {178; CHECK-LABEL: shuffle4_v16i8:179; CHECK:       // %bb.0:180; CHECK-NEXT:    adrp x8, .LCPI3_0181; CHECK-NEXT:    ldr q1, [x8, :lo12:.LCPI3_0]182; CHECK-NEXT:    adrp x8, .LCPI3_1183; CHECK-NEXT:    ldr q3, [x8, :lo12:.LCPI3_1]184; CHECK-NEXT:    adrp x8, .LCPI3_2185; CHECK-NEXT:    tbl v1.16b, { v0.16b }, v1.16b186; CHECK-NEXT:    tbl v0.16b, { v2.16b }, v3.16b187; CHECK-NEXT:    ldr q2, [x8, :lo12:.LCPI3_2]188; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b }, v2.16b189; CHECK-NEXT:    ret190  %x = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 0, i32 3, i32 2, i32 1, i32 12, i32 15, i32 14, i32 12>191  %y = shufflevector <16 x i8> %c, <16 x i8> %d, <8 x i32> <i32 4, i32 7, i32 6, i32 7, i32 8, i32 10, i32 9, i32 11>192  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>193  ret <16 x i8> %z194}195 196; CHECK: .LCPI4_0:197; CHECK: 	.byte	0                               // 0x0198; CHECK: 	.byte	1                               // 0x1199; CHECK: 	.byte	8                               // 0x8200; CHECK: 	.byte	9                               // 0x9201; CHECK: 	.byte	16                              // 0x10202; CHECK: 	.byte	17                              // 0x11203; CHECK: 	.byte	24                              // 0x18204; CHECK: 	.byte	25                              // 0x19205; CHECK: 	.byte	2                               // 0x2206; CHECK: 	.byte	3                               // 0x3207; CHECK: 	.byte	10                              // 0xa208; CHECK: 	.byte	11                              // 0xb209; CHECK: 	.byte	18                              // 0x12210; CHECK: 	.byte	19                              // 0x13211; CHECK: 	.byte	26                              // 0x1a212; CHECK: 	.byte	27                              // 0x1b213define <8 x i16> @shuffle4_v8i16(<4 x i16> %a, <4 x i16> %b, <4 x i16> %c, <4 x i16> %d) {214; CHECK-LABEL: shuffle4_v8i16:215; CHECK:       // %bb.0:216; CHECK-NEXT:    fmov d5, d2217; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1218; CHECK-NEXT:    // kill: def $d3 killed $d3 def $q3219; CHECK-NEXT:    adrp x8, .LCPI4_0220; CHECK-NEXT:    fmov d4, d0221; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI4_0]222; CHECK-NEXT:    mov v4.d[1], v1.d[0]223; CHECK-NEXT:    mov v5.d[1], v3.d[0]224; CHECK-NEXT:    tbl v0.16b, { v4.16b, v5.16b }, v0.16b225; CHECK-NEXT:    ret226  %x = shufflevector <4 x i16> %a, <4 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>227  %y = shufflevector <4 x i16> %c, <4 x i16> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>228  %z = shufflevector <8 x i16> %x, <8 x i16> %y, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13>229  ret <8 x i16> %z230}231 232define <4 x i32> @shuffle4_v4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, <4 x i32> %d) {233; CHECK-LABEL: shuffle4_v4i32:234; CHECK:       // %bb.0:235; CHECK-NEXT:    zip1 v1.4s, v1.4s, v1.4s236; CHECK-NEXT:    rev64 v3.4s, v3.4s237; CHECK-NEXT:    ext v1.16b, v1.16b, v0.16b, #4238; CHECK-NEXT:    zip2 v0.4s, v3.4s, v2.4s239; CHECK-NEXT:    mov v0.d[1], v1.d[1]240; CHECK-NEXT:    ret241  %x = shufflevector <4 x i32> %a, <4 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>242  %y = shufflevector <4 x i32> %c, <4 x i32> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>243  %z = shufflevector <8 x i32> %x, <8 x i32> %y, <4 x i32> <i32 15, i32 10, i32 5, i32 0>244  ret <4 x i32> %z245}246 247; CHECK: .LCPI6_0:248; CHECK: 	.byte	0                               // 0x0249; CHECK: 	.byte	7                               // 0x7250; CHECK: 	.byte	255                             // 0xff251; CHECK: 	.byte	1                               // 0x1252; CHECK: 	.byte	255                             // 0xff253; CHECK: 	.byte	255                             // 0xff254; CHECK: 	.byte	255                             // 0xff255; CHECK: 	.byte	255                             // 0xff256; CHECK: 	.section	.rodata.cst16,"aM",@progbits,16257; CHECK: 	.p2align	4258; CHECK: .LCPI6_1:259; CHECK: 	.byte	0                               // 0x0260; CHECK: 	.byte	16                              // 0x10261; CHECK: 	.byte	19                              // 0x13262; CHECK: 	.byte	3                               // 0x3263; CHECK: 	.byte	1                               // 0x1264; CHECK: 	.byte	17                              // 0x11265; CHECK: 	.byte	0                               // 0x0266; CHECK: 	.byte	1                               // 0x1267; CHECK: 	.byte	0                               // 0x0268; CHECK: 	.byte	16                              // 0x10269; CHECK: 	.byte	19                              // 0x13270; CHECK: 	.byte	3                               // 0x3271; CHECK: 	.byte	1                               // 0x1272; CHECK: 	.byte	17                              // 0x11273; CHECK: 	.byte	0                               // 0x0274; CHECK: 	.byte	1                               // 0x1275define <16 x i8> @shuffle4_v8i8_v16i8(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c, <8 x i8> %d) {276; CHECK-LABEL: shuffle4_v8i8_v16i8:277; CHECK:       // %bb.0:278; CHECK-NEXT:    // kill: def $d2 killed $d2 def $q2279; CHECK-NEXT:    // kill: def $d0 killed $d0 def $q0280; CHECK-NEXT:    adrp x8, .LCPI6_0281; CHECK-NEXT:    mov v2.d[1], v2.d[0]282; CHECK-NEXT:    mov v0.d[1], v0.d[0]283; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI6_0]284; CHECK-NEXT:    adrp x8, .LCPI6_1285; CHECK-NEXT:    tbl v3.8b, { v2.16b }, v1.8b286; CHECK-NEXT:    tbl v2.8b, { v0.16b }, v1.8b287; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI6_1]288; CHECK-NEXT:    tbl v0.16b, { v2.16b, v3.16b }, v0.16b289; CHECK-NEXT:    ret290  %x = shufflevector <8 x i8> %a, <8 x i8> %b, <4 x i32> <i32 0, i32 7, i32 5, i32 1>291  %y = shufflevector <8 x i8> %c, <8 x i8> %d, <4 x i32> <i32 0, i32 7, i32 5, i32 1>292  %z = shufflevector <4 x i8> %x, <4 x i8> %y, <16 x i32> <i32 0, i32 4, i32 7, i32 3, i32 1, i32 5, i32 0, i32 1, i32 0, i32 4, i32 7, i32 3, i32 1, i32 5, i32 0, i32 1>293  ret <16 x i8> %z294}295 296; CHECK: .LCPI7_0:297; CHECK: 	.byte	0                               // 0x0298; CHECK: 	.byte	7                               // 0x7299; CHECK: 	.byte	255                             // 0xff300; CHECK: 	.byte	1                               // 0x1301; CHECK: 	.byte	255                             // 0xff302; CHECK: 	.byte	255                             // 0xff303; CHECK: 	.byte	255                             // 0xff304; CHECK: 	.byte	255                             // 0xff305; CHECK: .LCPI7_1:306; CHECK: 	.byte	0                               // 0x0307; CHECK: 	.byte	8                               // 0x8308; CHECK: 	.byte	11                              // 0xb309; CHECK: 	.byte	3                               // 0x3310; CHECK: 	.byte	1                               // 0x1311; CHECK: 	.byte	9                               // 0x9312; CHECK: 	.byte	0                               // 0x0313; CHECK: 	.byte	1                               // 0x1314define <8 x i8> @shuffle4_v8i8_v8i8(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c, <8 x i8> %d) {315; CHECK-LABEL: shuffle4_v8i8_v8i8:316; CHECK:       // %bb.0:317; CHECK-NEXT:    // kill: def $d2 killed $d2 def $q2318; CHECK-NEXT:    // kill: def $d0 killed $d0 def $q0319; CHECK-NEXT:    adrp x8, .LCPI7_0320; CHECK-NEXT:    mov v2.d[1], v2.d[0]321; CHECK-NEXT:    mov v0.d[1], v0.d[0]322; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI7_0]323; CHECK-NEXT:    adrp x8, .LCPI7_1324; CHECK-NEXT:    tbl v2.8b, { v2.16b }, v1.8b325; CHECK-NEXT:    tbl v0.8b, { v0.16b }, v1.8b326; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI7_1]327; CHECK-NEXT:    mov v0.d[1], v2.d[0]328; CHECK-NEXT:    tbl v0.8b, { v0.16b }, v1.8b329; CHECK-NEXT:    ret330  %x = shufflevector <8 x i8> %a, <8 x i8> %b, <4 x i32> <i32 0, i32 7, i32 5, i32 1>331  %y = shufflevector <8 x i8> %c, <8 x i8> %d, <4 x i32> <i32 0, i32 7, i32 5, i32 1>332  %z = shufflevector <4 x i8> %x, <4 x i8> %y, <8 x i32> <i32 0, i32 4, i32 7, i32 3, i32 1, i32 5, i32 0, i32 1>333  ret <8 x i8> %z334}335 336; CHECK: .LCPI8_0:337; CHECK: 	.byte	0                               // 0x0338; CHECK: 	.byte	1                               // 0x1339; CHECK: 	.byte	8                               // 0x8340; CHECK: 	.byte	9                               // 0x9341; CHECK: 	.byte	16                              // 0x10342; CHECK: 	.byte	17                              // 0x11343; CHECK: 	.byte	24                              // 0x18344; CHECK: 	.byte	25                              // 0x19345; CHECK: 	.byte	2                               // 0x2346; CHECK: 	.byte	3                               // 0x3347; CHECK: 	.byte	10                              // 0xa348; CHECK: 	.byte	11                              // 0xb349; CHECK: 	.byte	18                              // 0x12350; CHECK: 	.byte	19                              // 0x13351; CHECK: 	.byte	26                              // 0x1a352; CHECK: 	.byte	27                              // 0x1b353define <8 x i16> @shuffle4_v4i8_zext(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c, <4 x i8> %d) {354; CHECK-LABEL: shuffle4_v4i8_zext:355; CHECK:       // %bb.0:356; CHECK-NEXT:    fmov d5, d2357; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1358; CHECK-NEXT:    // kill: def $d3 killed $d3 def $q3359; CHECK-NEXT:    adrp x8, .LCPI8_0360; CHECK-NEXT:    fmov d4, d0361; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI8_0]362; CHECK-NEXT:    mov v4.d[1], v1.d[0]363; CHECK-NEXT:    mov v5.d[1], v3.d[0]364; CHECK-NEXT:    bic v4.8h, #255, lsl #8365; CHECK-NEXT:    bic v5.8h, #255, lsl #8366; CHECK-NEXT:    tbl v0.16b, { v4.16b, v5.16b }, v0.16b367; CHECK-NEXT:    ret368  %x = shufflevector <4 x i8> %a, <4 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>369  %y = shufflevector <4 x i8> %c, <4 x i8> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>370  %xe = zext <8 x i8> %x to <8 x i16>371  %ye = zext <8 x i8> %y to <8 x i16>372  %z = shufflevector <8 x i16> %xe, <8 x i16> %ye, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13>373  ret <8 x i16> %z374}375 376; CHECK: .LCPI9_0:377; CHECK: 	.byte	0                               // 0x0378; CHECK: 	.byte	16                              // 0x10379; CHECK: 	.byte	32                              // 0x20380; CHECK: 	.byte	48                              // 0x30381; CHECK: 	.byte	2                               // 0x2382; CHECK: 	.byte	18                              // 0x12383; CHECK: 	.byte	34                              // 0x22384; CHECK: 	.byte	50                              // 0x32385; CHECK: 	.byte	4                               // 0x4386; CHECK: 	.byte	20                              // 0x14387; CHECK: 	.byte	36                              // 0x24388; CHECK: 	.byte	52                              // 0x34389; CHECK: 	.byte	6                               // 0x6390; CHECK: 	.byte	22                              // 0x16391; CHECK: 	.byte	38                              // 0x26392; CHECK: 	.byte	54                              // 0x36393define <16 x i8> @shuffle4_v4i16_trunc(<4 x i16> %ae, <4 x i16> %be, <4 x i16> %ce, <4 x i16> %de) {394; CHECK-LABEL: shuffle4_v4i16_trunc:395; CHECK:       // %bb.0:396; CHECK-NEXT:    // kill: def $d3 killed $d3 killed $q0_q1_q2_q3 def $q0_q1_q2_q3397; CHECK-NEXT:    adrp x8, .LCPI9_0398; CHECK-NEXT:    // kill: def $d2 killed $d2 killed $q0_q1_q2_q3 def $q0_q1_q2_q3399; CHECK-NEXT:    ldr q4, [x8, :lo12:.LCPI9_0]400; CHECK-NEXT:    // kill: def $d1 killed $d1 killed $q0_q1_q2_q3 def $q0_q1_q2_q3401; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0_q1_q2_q3 def $q0_q1_q2_q3402; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v4.16b403; CHECK-NEXT:    ret404  %a = trunc <4 x i16> %ae to <4 x i8>405  %b = trunc <4 x i16> %be to <4 x i8>406  %c = trunc <4 x i16> %ce to <4 x i8>407  %d = trunc <4 x i16> %de to <4 x i8>408  %x = shufflevector <4 x i8> %a, <4 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>409  %y = shufflevector <4 x i8> %c, <4 x i8> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>410  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>411  ret <16 x i8> %z412}413 414; CHECK: .LCPI10_0:415; CHECK: 	.byte	0                               // 0x0416; CHECK: 	.byte	16                              // 0x10417; CHECK: 	.byte	32                              // 0x20418; CHECK: 	.byte	48                              // 0x30419; CHECK: 	.byte	2                               // 0x2420; CHECK: 	.byte	18                              // 0x12421; CHECK: 	.byte	34                              // 0x22422; CHECK: 	.byte	50                              // 0x32423; CHECK: 	.byte	4                               // 0x4424; CHECK: 	.byte	20                              // 0x14425; CHECK: 	.byte	36                              // 0x24426; CHECK: 	.byte	52                              // 0x34427; CHECK: 	.byte	6                               // 0x6428; CHECK: 	.byte	22                              // 0x16429; CHECK: 	.byte	38                              // 0x26430; CHECK: 	.byte	54                              // 0x36431; CHECK: 	.text432define <16 x i8> @shuffle4_v4i32_trunc(<4 x i32> %ae, <4 x i32> %be, <4 x i32> %ce, <4 x i32> %de) {433; CHECK-LABEL: shuffle4_v4i32_trunc:434; CHECK:       // %bb.0:435; CHECK-NEXT:    xtn v4.4h, v0.4s436; CHECK-NEXT:    adrp x8, .LCPI10_0437; CHECK-NEXT:    xtn v5.4h, v1.4s438; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI10_0]439; CHECK-NEXT:    xtn v6.4h, v2.4s440; CHECK-NEXT:    xtn v7.4h, v3.4s441; CHECK-NEXT:    tbl v0.16b, { v4.16b, v5.16b, v6.16b, v7.16b }, v0.16b442; CHECK-NEXT:    ret443  %a = trunc <4 x i32> %ae to <4 x i8>444  %b = trunc <4 x i32> %be to <4 x i8>445  %c = trunc <4 x i32> %ce to <4 x i8>446  %d = trunc <4 x i32> %de to <4 x i8>447  %x = shufflevector <4 x i8> %a, <4 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>448  %y = shufflevector <4 x i8> %c, <4 x i8> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>449  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>450  ret <16 x i8> %z451}452 453; CHECK: .LCPI11_0:454; CHECK: 	.byte	0                               // 0x0455; CHECK: 	.byte	16                              // 0x10456; CHECK: 	.byte	32                              // 0x20457; CHECK: 	.byte	2                               // 0x2458; CHECK: 	.byte	18                              // 0x12459; CHECK: 	.byte	34                              // 0x22460; CHECK: 	.byte	4                               // 0x4461; CHECK: 	.byte	20                              // 0x14462; CHECK: 	.byte	36                              // 0x24463; CHECK: 	.byte	6                               // 0x6464; CHECK: 	.byte	22                              // 0x16465; CHECK: 	.byte	38                              // 0x26466; CHECK: 	.byte	255                             // 0xff467; CHECK: 	.byte	255                             // 0xff468; CHECK: 	.byte	255                             // 0xff469; CHECK: 	.byte	255                             // 0xff470define <12 x i8> @shuffle3_v4i8(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c) {471; CHECK-LABEL: shuffle3_v4i8:472; CHECK:       // %bb.0:473; CHECK-NEXT:    // kill: def $d2 killed $d2 killed $q0_q1_q2 def $q0_q1_q2474; CHECK-NEXT:    adrp x8, .LCPI11_0475; CHECK-NEXT:    ldr q3, [x8, :lo12:.LCPI11_0]476; CHECK-NEXT:    // kill: def $d1 killed $d1 killed $q0_q1_q2 def $q0_q1_q2477; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0_q1_q2 def $q0_q1_q2478; CHECK-NEXT:    tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v3.16b479; CHECK-NEXT:    ret480  %x = shufflevector <4 x i8> %a, <4 x i8> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>481  %y = shufflevector <4 x i8> %c, <4 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>482  %z = shufflevector <8 x i8> %x, <8 x i8> %y, <12 x i32> <i32 0, i32 4, i32 8, i32 1, i32 5, i32 9, i32 2, i32 6, i32 10, i32 3, i32 7, i32 11>483  ret <12 x i8> %z484}485 486; CHECK: .LCPI12_0:487; CHECK: 	.byte	0                               // 0x0488; CHECK: 	.byte	1                               // 0x1489; CHECK: 	.byte	8                               // 0x8490; CHECK: 	.byte	9                               // 0x9491; CHECK: 	.byte	16                              // 0x10492; CHECK: 	.byte	17                              // 0x11493; CHECK: 	.byte	2                               // 0x2494; CHECK: 	.byte	3                               // 0x3495; CHECK: 	.byte	10                              // 0xa496; CHECK: 	.byte	11                              // 0xb497; CHECK: 	.byte	18                              // 0x12498; CHECK: 	.byte	19                              // 0x13499; CHECK: 	.byte	4                               // 0x4500; CHECK: 	.byte	5                               // 0x5501; CHECK: 	.byte	12                              // 0xc502; CHECK: 	.byte	13                              // 0xd503define <8 x i16> @shuffle3_v4i16(<4 x i16> %a, <4 x i16> %b, <4 x i16> %c) {504; CHECK-LABEL: shuffle3_v4i16:505; CHECK:       // %bb.0:506; CHECK-NEXT:    fmov d3, d2507; CHECK-NEXT:    // kill: def $d1 killed $d1 def $q1508; CHECK-NEXT:    adrp x8, .LCPI12_0509; CHECK-NEXT:    fmov d2, d0510; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI12_0]511; CHECK-NEXT:    mov v2.d[1], v1.d[0]512; CHECK-NEXT:    tbl v0.16b, { v2.16b, v3.16b }, v0.16b513; CHECK-NEXT:    ret514  %x = shufflevector <4 x i16> %a, <4 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>515  %y = shufflevector <4 x i16> %c, <4 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>516  %z = shufflevector <8 x i16> %x, <8 x i16> %y, <8 x i32> <i32 0, i32 4, i32 8, i32 1, i32 5, i32 9, i32 2, i32 6>517  ret <8 x i16> %z518}519 520define <4 x i32> @shuffle3_v4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {521; CHECK-LABEL: shuffle3_v4i32:522; CHECK:       // %bb.0:523; CHECK-NEXT:    trn1 v1.4s, v0.4s, v1.4s524; CHECK-NEXT:    mov v1.d[1], v0.d[0]525; CHECK-NEXT:    mov v1.s[2], v2.s[0]526; CHECK-NEXT:    mov v0.16b, v1.16b527; CHECK-NEXT:    ret528  %x = shufflevector <4 x i32> %a, <4 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>529  %y = shufflevector <4 x i32> %c, <4 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>530  %z = shufflevector <8 x i32> %x, <8 x i32> %y, <4 x i32> <i32 0, i32 4, i32 8, i32 1>531  ret <4 x i32> %z532}533 534; CHECK: .LCPI14_0:535; CHECK: 	.byte	4                               // 0x4536; CHECK: 	.byte	8                               // 0x8537; CHECK: 	.byte	255                             // 0xff538; CHECK: 	.byte	255                             // 0xff539; CHECK: 	.byte	14                              // 0xe540; CHECK: 	.byte	3                               // 0x3541; CHECK: 	.byte	255                             // 0xff542; CHECK: 	.byte	255                             // 0xff543; CHECK: 	.section	.rodata.cst16,"aM",@progbits,16544; CHECK: 	.p2align	4545; CHECK: .LCPI14_1:546; CHECK: 	.byte	255                             // 0xff547; CHECK: 	.byte	255                             // 0xff548; CHECK: 	.byte	15                              // 0xf549; CHECK: 	.byte	27                              // 0x1b550; CHECK: 	.byte	255                             // 0xff551; CHECK: 	.byte	255                             // 0xff552; CHECK: 	.byte	24                              // 0x18553; CHECK: 	.byte	12                              // 0xc554; CHECK: 	.byte	255                             // 0xff555; CHECK: 	.byte	255                             // 0xff556; CHECK: 	.byte	255                             // 0xff557; CHECK: 	.byte	255                             // 0xff558; CHECK: 	.byte	255                             // 0xff559; CHECK: 	.byte	255                             // 0xff560; CHECK: 	.byte	255                             // 0xff561; CHECK: 	.byte	255                             // 0xff562define <8 x i8> @insert4_v8i8(<8 x i8> %a, <16 x i8> %b, <8 x i8> %c, <16 x i8> %d) {563; CHECK-LABEL: insert4_v8i8:564; CHECK:       // %bb.0:565; CHECK-NEXT:    // kill: def $d0 killed $d0 def $q0566; CHECK-NEXT:    mov v4.16b, v3.16b567; CHECK-NEXT:    // kill: def $d2 killed $d2 def $q2568; CHECK-NEXT:    adrp x8, .LCPI14_0569; CHECK-NEXT:    adrp x9, .LCPI14_1570; CHECK-NEXT:    mov v0.d[1], v2.d[0]571; CHECK-NEXT:    mov v3.16b, v1.16b572; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI14_0]573; CHECK-NEXT:    ldr q2, [x9, :lo12:.LCPI14_1]574; CHECK-NEXT:    tbl v0.8b, { v0.16b }, v1.8b575; CHECK-NEXT:    tbl v1.16b, { v3.16b, v4.16b }, v2.16b576; CHECK-NEXT:    trn1 v0.4h, v1.4h, v0.4h577; CHECK-NEXT:    trn2 v0.4h, v0.4h, v1.4h578; CHECK-NEXT:    ret579  %e1 = extractelement <8 x i8> %a, i32 4580  %e2 = extractelement <8 x i8> %c, i32 0581  %e3 = extractelement <16 x i8> %b, i32 15582  %e4 = extractelement <16 x i8> %d, i32 11583  %e5 = extractelement <8 x i8> %c, i32 6584  %e6 = extractelement <8 x i8> %a, i32 3585  %e7 = extractelement <16 x i8> %d, i32 8586  %e8 = extractelement <16 x i8> %b, i32 12587  %i1 = insertelement <8 x i8> undef, i8 %e1, i32 0588  %i2 = insertelement <8 x i8> %i1, i8 %e2, i32 1589  %i3 = insertelement <8 x i8> %i2, i8 %e3, i32 2590  %i4 = insertelement <8 x i8> %i3, i8 %e4, i32 3591  %i5 = insertelement <8 x i8> %i4, i8 %e5, i32 4592  %i6 = insertelement <8 x i8> %i5, i8 %e6, i32 5593  %i7 = insertelement <8 x i8> %i6, i8 %e7, i32 6594  %i8 = insertelement <8 x i8> %i7, i8 %e8, i32 7595  ret <8 x i8> %i8596}597 598; CHECK: .LCPI15_0:599; CHECK: .byte 255                             // 0xff600; CHECK: .byte 255                             // 0xff601; CHECK: .byte 15                              // 0xf602; CHECK: .byte 27                              // 0x1b603; CHECK: .byte 255                             // 0xff604; CHECK: .byte 255                             // 0xff605; CHECK: .byte 24                              // 0x18606; CHECK: .byte 12                              // 0xc607; CHECK: .byte 255                             // 0xff608; CHECK: .byte 255                             // 0xff609; CHECK: .byte 15                              // 0xf610; CHECK: .byte 27                              // 0x1b611; CHECK: .byte 255                             // 0xff612; CHECK: .byte 255                             // 0xff613; CHECK: .byte 24                              // 0x18614; CHECK: .byte 12                              // 0xc615; CHECK: .LCPI15_1:616; CHECK: .byte 20                              // 0x14617; CHECK: .byte 24                              // 0x18618; CHECK: .byte 2                               // 0x2619; CHECK: .byte 3                               // 0x3620; CHECK: .byte 30                              // 0x1e621; CHECK: .byte 19                              // 0x13622; CHECK: .byte 6                               // 0x6623; CHECK: .byte 7                               // 0x7624; CHECK: .byte 20                              // 0x14625; CHECK: .byte 24                              // 0x18626; CHECK: .byte 10                              // 0xa627; CHECK: .byte 11                              // 0xb628; CHECK: .byte 30                              // 0x1e629; CHECK: .byte 19                              // 0x13630; CHECK: .byte 14                              // 0xe631; CHECK: .byte 15                              // 0xf632define <16 x i8> @insert4_v16i8(<8 x i8> %a, <16 x i8> %b, <8 x i8> %c, <16 x i8> %d) {633; CHECK-LABEL: insert4_v16i8:634; CHECK:       // %bb.0:635; CHECK-NEXT:    mov v4.16b, v3.16b636; CHECK-NEXT:    adrp x8, .LCPI15_0637; CHECK-NEXT:    // kill: def $d0 killed $d0 def $q31_q0638; CHECK-NEXT:    // kill: def $d2 killed $d2 def $q2639; CHECK-NEXT:    mov v3.16b, v1.16b640; CHECK-NEXT:    ldr q5, [x8, :lo12:.LCPI15_0]641; CHECK-NEXT:    mov v0.d[1], v2.d[0]642; CHECK-NEXT:    adrp x8, .LCPI15_1643; CHECK-NEXT:    ldr q1, [x8, :lo12:.LCPI15_1]644; CHECK-NEXT:    tbl v31.16b, { v3.16b, v4.16b }, v5.16b645; CHECK-NEXT:    tbl v0.16b, { v31.16b, v0.16b }, v1.16b646; CHECK-NEXT:    ret647  %e1 = extractelement <8 x i8> %a, i32 4648  %e2 = extractelement <8 x i8> %c, i32 0649  %e3 = extractelement <16 x i8> %b, i32 15650  %e4 = extractelement <16 x i8> %d, i32 11651  %e5 = extractelement <8 x i8> %c, i32 6652  %e6 = extractelement <8 x i8> %a, i32 3653  %e7 = extractelement <16 x i8> %d, i32 8654  %e8 = extractelement <16 x i8> %b, i32 12655  %e9 = extractelement <8 x i8> %a, i32 4656  %e10 = extractelement <8 x i8> %c, i32 0657  %e11 = extractelement <16 x i8> %b, i32 15658  %e12 = extractelement <16 x i8> %d, i32 11659  %e13 = extractelement <8 x i8> %c, i32 6660  %e14 = extractelement <8 x i8> %a, i32 3661  %e15 = extractelement <16 x i8> %d, i32 8662  %e16 = extractelement <16 x i8> %b, i32 12663  %i1 = insertelement <16 x i8> undef, i8 %e1, i32 0664  %i2 = insertelement <16 x i8> %i1, i8 %e2, i32 1665  %i3 = insertelement <16 x i8> %i2, i8 %e3, i32 2666  %i4 = insertelement <16 x i8> %i3, i8 %e4, i32 3667  %i5 = insertelement <16 x i8> %i4, i8 %e5, i32 4668  %i6 = insertelement <16 x i8> %i5, i8 %e6, i32 5669  %i7 = insertelement <16 x i8> %i6, i8 %e7, i32 6670  %i8 = insertelement <16 x i8> %i7, i8 %e8, i32 7671  %i9 = insertelement <16 x i8> %i8, i8 %e9, i32 8672  %i10 = insertelement <16 x i8> %i9, i8 %e10, i32 9673  %i11 = insertelement <16 x i8> %i10, i8 %e11, i32 10674  %i12 = insertelement <16 x i8> %i11, i8 %e12, i32 11675  %i13 = insertelement <16 x i8> %i12, i8 %e13, i32 12676  %i14 = insertelement <16 x i8> %i13, i8 %e14, i32 13677  %i15 = insertelement <16 x i8> %i14, i8 %e15, i32 14678  %i16 = insertelement <16 x i8> %i15, i8 %e16, i32 15679  ret <16 x i8> %i16680}681 682 683; CHECK: .LCPI16_0:684; CHECK: 	.byte	0685; CHECK: 	.byte	1686; CHECK: 	.byte	4687; CHECK: 	.byte	5688; CHECK: 	.byte	16689; CHECK: 	.byte	17690; CHECK: 	.byte	20691; CHECK: 	.byte	21692; CHECK: 	.byte	32693; CHECK: 	.byte	33694; CHECK: 	.byte	36695; CHECK: 	.byte	37696; CHECK: 	.byte	48697; CHECK: 	.byte	49698; CHECK: 	.byte	52699; CHECK: 	.byte	53700define <16 x i16> @test(<2 x double> %l213, <2 x double> %l231, <2 x double> %l249, <2 x double> %l267, <2 x double> %l285, <2 x double> %l303, <2 x double> %l321, <2 x double> %l339) {701; CHECK-LABEL: test:702; CHECK:       // %bb.0:703; CHECK-NEXT:    frintm v0.2d, v0.2d704; CHECK-NEXT:    frintm v4.2d, v4.2d705; CHECK-NEXT:    adrp x8, .LCPI16_0706; CHECK-NEXT:    frintm v1.2d, v1.2d707; CHECK-NEXT:    frintm v5.2d, v5.2d708; CHECK-NEXT:    frintm v2.2d, v2.2d709; CHECK-NEXT:    frintm v6.2d, v6.2d710; CHECK-NEXT:    frintm v3.2d, v3.2d711; CHECK-NEXT:    frintm v7.2d, v7.2d712; CHECK-NEXT:    fcvtzs v0.2d, v0.2d713; CHECK-NEXT:    fcvtzs v4.2d, v4.2d714; CHECK-NEXT:    fcvtzs v1.2d, v1.2d715; CHECK-NEXT:    fcvtzs v5.2d, v5.2d716; CHECK-NEXT:    fcvtzs v2.2d, v2.2d717; CHECK-NEXT:    fcvtzs v6.2d, v6.2d718; CHECK-NEXT:    fcvtzs v3.2d, v3.2d719; CHECK-NEXT:    fcvtzs v7.2d, v7.2d720; CHECK-NEXT:    xtn v16.2s, v0.2d721; CHECK-NEXT:    xtn v20.2s, v4.2d722; CHECK-NEXT:    ldr q0, [x8, :lo12:.LCPI16_0]723; CHECK-NEXT:    xtn v17.2s, v1.2d724; CHECK-NEXT:    xtn v21.2s, v5.2d725; CHECK-NEXT:    xtn v18.2s, v2.2d726; CHECK-NEXT:    xtn v22.2s, v6.2d727; CHECK-NEXT:    xtn v19.2s, v3.2d728; CHECK-NEXT:    xtn v23.2s, v7.2d729; CHECK-NEXT:    tbl v1.16b, { v16.16b, v17.16b, v18.16b, v19.16b }, v0.16b730; CHECK-NEXT:    tbl v2.16b, { v20.16b, v21.16b, v22.16b, v23.16b }, v0.16b731; CHECK-NEXT:    uzp1 v0.8h, v1.8h, v2.8h732; CHECK-NEXT:    uzp2 v1.8h, v1.8h, v2.8h733; CHECK-NEXT:    ret734  %l214 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l213)735  %l215 = fptosi <2 x double> %l214 to <2 x i16>736  %l232 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l231)737  %l233 = fptosi <2 x double> %l232 to <2 x i16>738  %l250 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l249)739  %l251 = fptosi <2 x double> %l250 to <2 x i16>740  %l268 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l267)741  %l269 = fptosi <2 x double> %l268 to <2 x i16>742  %l286 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l285)743  %l287 = fptosi <2 x double> %l286 to <2 x i16>744  %l304 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l303)745  %l305 = fptosi <2 x double> %l304 to <2 x i16>746  %l322 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l321)747  %l323 = fptosi <2 x double> %l322 to <2 x i16>748  %l340 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %l339)749  %l341 = fptosi <2 x double> %l340 to <2 x i16>750  %l342 = shufflevector <2 x i16> %l215, <2 x i16> %l233, <4 x i32> <i32 0, i32 1, i32 2, i32 3>751  %l343 = shufflevector <2 x i16> %l251, <2 x i16> %l269, <4 x i32> <i32 0, i32 1, i32 2, i32 3>752  %l344 = shufflevector <2 x i16> %l287, <2 x i16> %l305, <4 x i32> <i32 0, i32 1, i32 2, i32 3>753  %l345 = shufflevector <2 x i16> %l323, <2 x i16> %l341, <4 x i32> <i32 0, i32 1, i32 2, i32 3>754  %l346 = shufflevector <4 x i16> %l342, <4 x i16> %l343, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>755  %l347 = shufflevector <4 x i16> %l344, <4 x i16> %l345, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>756  %interleaved.vec = shufflevector <8 x i16> %l346, <8 x i16> %l347, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>757  ret <16 x i16> %interleaved.vec758}759 760declare <2 x double> @llvm.floor.v2f64(<2 x double> %l213)761