brintos

brintos / llvm-project-archived public Read only

0
0
Text · 68.7 KiB · 6d4be7d Raw
1634 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=-sse2 | FileCheck %s --check-prefixes=ALL,SCALAR3; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse2 | FileCheck %s --check-prefixes=ALL,SSE,SSE2,SSE2-ONLY4; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse3 | FileCheck %s --check-prefixes=ALL,SSE,SSE2,SSE35; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+ssse3 | FileCheck %s --check-prefixes=ALL,SSE,SSSE3,SSSE3-ONLY6; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse4.1 | FileCheck %s --check-prefixes=ALL,SSE,SSSE3,SSE417; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse4.2 | FileCheck %s --check-prefixes=ALL,SSE,SSSE3,SSE428; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx | FileCheck %s --check-prefixes=ALL,AVX,AVX19; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 | FileCheck %s --check-prefixes=ALL,AVX,AVX210; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512vl | FileCheck %s --check-prefixes=ALL,AVX512,AVX512F11; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=ALL,AVX512,AVX512BW12 13define void @vec16_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {14; ALL-LABEL: vec16_i8:15; ALL:       # %bb.0:16; ALL-NEXT:    movzbl (%rdi), %eax17; ALL-NEXT:    notb %al18; ALL-NEXT:    movb %al, (%rsi)19; ALL-NEXT:    movb %al, 1(%rsi)20; ALL-NEXT:    retq21  %in.elt.not = load i8, ptr %in.elt.ptr, align 6422  %in.elt = xor i8 %in.elt.not, -123  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 024  store i8 %in.elt, ptr %out.elt0.ptr, align 6425  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 126  store i8 %in.elt, ptr %out.elt1.ptr, align 127  ret void28}29 30define void @vec32_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {31; ALL-LABEL: vec32_i8:32; ALL:       # %bb.0:33; ALL-NEXT:    movzbl (%rdi), %eax34; ALL-NEXT:    notb %al35; ALL-NEXT:    movb %al, (%rsi)36; ALL-NEXT:    movb %al, 1(%rsi)37; ALL-NEXT:    movb %al, 2(%rsi)38; ALL-NEXT:    movb %al, 3(%rsi)39; ALL-NEXT:    retq40  %in.elt.not = load i8, ptr %in.elt.ptr, align 6441  %in.elt = xor i8 %in.elt.not, -142  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 043  store i8 %in.elt, ptr %out.elt0.ptr, align 6444  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 145  store i8 %in.elt, ptr %out.elt1.ptr, align 146  %out.elt2.ptr = getelementptr i8, ptr %out.vec.ptr, i64 247  store i8 %in.elt, ptr %out.elt2.ptr, align 248  %out.elt3.ptr = getelementptr i8, ptr %out.vec.ptr, i64 349  store i8 %in.elt, ptr %out.elt3.ptr, align 150  ret void51}52 53define void @vec32_i16(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {54; ALL-LABEL: vec32_i16:55; ALL:       # %bb.0:56; ALL-NEXT:    movl (%rdi), %eax57; ALL-NEXT:    notl %eax58; ALL-NEXT:    movw %ax, (%rsi)59; ALL-NEXT:    movw %ax, 2(%rsi)60; ALL-NEXT:    retq61  %in.elt.not = load i16, ptr %in.elt.ptr, align 6462  %in.elt = xor i16 %in.elt.not, -163  %out.elt0.ptr = getelementptr i16, ptr %out.vec.ptr, i64 064  store i16 %in.elt, ptr %out.elt0.ptr, align 6465  %out.elt1.ptr = getelementptr i16, ptr %out.vec.ptr, i64 166  store i16 %in.elt, ptr %out.elt1.ptr, align 267  ret void68}69 70define void @vec64_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {71; ALL-LABEL: vec64_i8:72; ALL:       # %bb.0:73; ALL-NEXT:    movzbl (%rdi), %eax74; ALL-NEXT:    notb %al75; ALL-NEXT:    movb %al, (%rsi)76; ALL-NEXT:    movb %al, 1(%rsi)77; ALL-NEXT:    movb %al, 2(%rsi)78; ALL-NEXT:    movb %al, 3(%rsi)79; ALL-NEXT:    movb %al, 4(%rsi)80; ALL-NEXT:    movb %al, 5(%rsi)81; ALL-NEXT:    movb %al, 6(%rsi)82; ALL-NEXT:    movb %al, 7(%rsi)83; ALL-NEXT:    retq84  %in.elt.not = load i8, ptr %in.elt.ptr, align 6485  %in.elt = xor i8 %in.elt.not, -186  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 087  store i8 %in.elt, ptr %out.elt0.ptr, align 6488  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 189  store i8 %in.elt, ptr %out.elt1.ptr, align 190  %out.elt2.ptr = getelementptr i8, ptr %out.vec.ptr, i64 291  store i8 %in.elt, ptr %out.elt2.ptr, align 292  %out.elt3.ptr = getelementptr i8, ptr %out.vec.ptr, i64 393  store i8 %in.elt, ptr %out.elt3.ptr, align 194  %out.elt4.ptr = getelementptr i8, ptr %out.vec.ptr, i64 495  store i8 %in.elt, ptr %out.elt4.ptr, align 496  %out.elt5.ptr = getelementptr i8, ptr %out.vec.ptr, i64 597  store i8 %in.elt, ptr %out.elt5.ptr, align 198  %out.elt6.ptr = getelementptr i8, ptr %out.vec.ptr, i64 699  store i8 %in.elt, ptr %out.elt6.ptr, align 2100  %out.elt7.ptr = getelementptr i8, ptr %out.vec.ptr, i64 7101  store i8 %in.elt, ptr %out.elt7.ptr, align 1102  ret void103}104 105define void @vec64_i16(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {106; ALL-LABEL: vec64_i16:107; ALL:       # %bb.0:108; ALL-NEXT:    movl (%rdi), %eax109; ALL-NEXT:    notl %eax110; ALL-NEXT:    movw %ax, (%rsi)111; ALL-NEXT:    movw %ax, 2(%rsi)112; ALL-NEXT:    movw %ax, 4(%rsi)113; ALL-NEXT:    movw %ax, 6(%rsi)114; ALL-NEXT:    retq115  %in.elt.not = load i16, ptr %in.elt.ptr, align 64116  %in.elt = xor i16 %in.elt.not, -1117  %out.elt0.ptr = getelementptr i16, ptr %out.vec.ptr, i64 0118  store i16 %in.elt, ptr %out.elt0.ptr, align 64119  %out.elt1.ptr = getelementptr i16, ptr %out.vec.ptr, i64 1120  store i16 %in.elt, ptr %out.elt1.ptr, align 2121  %out.elt2.ptr = getelementptr i16, ptr %out.vec.ptr, i64 2122  store i16 %in.elt, ptr %out.elt2.ptr, align 4123  %out.elt3.ptr = getelementptr i16, ptr %out.vec.ptr, i64 3124  store i16 %in.elt, ptr %out.elt3.ptr, align 2125  ret void126}127 128define void @vec64_i32(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {129; ALL-LABEL: vec64_i32:130; ALL:       # %bb.0:131; ALL-NEXT:    movl (%rdi), %eax132; ALL-NEXT:    notl %eax133; ALL-NEXT:    movl %eax, (%rsi)134; ALL-NEXT:    movl %eax, 4(%rsi)135; ALL-NEXT:    retq136  %in.elt.not = load i32, ptr %in.elt.ptr, align 64137  %in.elt = xor i32 %in.elt.not, -1138  %out.elt0.ptr = getelementptr i32, ptr %out.vec.ptr, i64 0139  store i32 %in.elt, ptr %out.elt0.ptr, align 64140  %out.elt1.ptr = getelementptr i32, ptr %out.vec.ptr, i64 1141  store i32 %in.elt, ptr %out.elt1.ptr, align 4142  ret void143}144 145define void @vec64_float(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {146; ALL-LABEL: vec64_float:147; ALL:       # %bb.0:148; ALL-NEXT:    movl (%rdi), %eax149; ALL-NEXT:    notl %eax150; ALL-NEXT:    movl %eax, (%rsi)151; ALL-NEXT:    movl %eax, 4(%rsi)152; ALL-NEXT:    retq153  %in.elt.not = load i32, ptr %in.elt.ptr, align 64154  %in.elt.int = xor i32 %in.elt.not, -1155  %in.elt = bitcast i32 %in.elt.int to float156  %out.elt0.ptr = getelementptr float, ptr %out.vec.ptr, i64 0157  store float %in.elt, ptr %out.elt0.ptr, align 64158  %out.elt1.ptr = getelementptr float, ptr %out.vec.ptr, i64 1159  store float %in.elt, ptr %out.elt1.ptr, align 4160  ret void161}162 163define void @vec128_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {164; ALL-LABEL: vec128_i8:165; ALL:       # %bb.0:166; ALL-NEXT:    movzbl (%rdi), %eax167; ALL-NEXT:    notb %al168; ALL-NEXT:    movb %al, (%rsi)169; ALL-NEXT:    movb %al, 1(%rsi)170; ALL-NEXT:    movb %al, 2(%rsi)171; ALL-NEXT:    movb %al, 3(%rsi)172; ALL-NEXT:    movb %al, 4(%rsi)173; ALL-NEXT:    movb %al, 5(%rsi)174; ALL-NEXT:    movb %al, 6(%rsi)175; ALL-NEXT:    movb %al, 7(%rsi)176; ALL-NEXT:    movb %al, 8(%rsi)177; ALL-NEXT:    movb %al, 9(%rsi)178; ALL-NEXT:    movb %al, 10(%rsi)179; ALL-NEXT:    movb %al, 11(%rsi)180; ALL-NEXT:    movb %al, 12(%rsi)181; ALL-NEXT:    movb %al, 13(%rsi)182; ALL-NEXT:    movb %al, 14(%rsi)183; ALL-NEXT:    movb %al, 15(%rsi)184; ALL-NEXT:    retq185  %in.elt.not = load i8, ptr %in.elt.ptr, align 64186  %in.elt = xor i8 %in.elt.not, -1187  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 0188  store i8 %in.elt, ptr %out.elt0.ptr, align 64189  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 1190  store i8 %in.elt, ptr %out.elt1.ptr, align 1191  %out.elt2.ptr = getelementptr i8, ptr %out.vec.ptr, i64 2192  store i8 %in.elt, ptr %out.elt2.ptr, align 2193  %out.elt3.ptr = getelementptr i8, ptr %out.vec.ptr, i64 3194  store i8 %in.elt, ptr %out.elt3.ptr, align 1195  %out.elt4.ptr = getelementptr i8, ptr %out.vec.ptr, i64 4196  store i8 %in.elt, ptr %out.elt4.ptr, align 4197  %out.elt5.ptr = getelementptr i8, ptr %out.vec.ptr, i64 5198  store i8 %in.elt, ptr %out.elt5.ptr, align 1199  %out.elt6.ptr = getelementptr i8, ptr %out.vec.ptr, i64 6200  store i8 %in.elt, ptr %out.elt6.ptr, align 2201  %out.elt7.ptr = getelementptr i8, ptr %out.vec.ptr, i64 7202  store i8 %in.elt, ptr %out.elt7.ptr, align 1203  %out.elt8.ptr = getelementptr i8, ptr %out.vec.ptr, i64 8204  store i8 %in.elt, ptr %out.elt8.ptr, align 8205  %out.elt9.ptr = getelementptr i8, ptr %out.vec.ptr, i64 9206  store i8 %in.elt, ptr %out.elt9.ptr, align 1207  %out.elt10.ptr = getelementptr i8, ptr %out.vec.ptr, i64 10208  store i8 %in.elt, ptr %out.elt10.ptr, align 2209  %out.elt11.ptr = getelementptr i8, ptr %out.vec.ptr, i64 11210  store i8 %in.elt, ptr %out.elt11.ptr, align 1211  %out.elt12.ptr = getelementptr i8, ptr %out.vec.ptr, i64 12212  store i8 %in.elt, ptr %out.elt12.ptr, align 4213  %out.elt13.ptr = getelementptr i8, ptr %out.vec.ptr, i64 13214  store i8 %in.elt, ptr %out.elt13.ptr, align 1215  %out.elt14.ptr = getelementptr i8, ptr %out.vec.ptr, i64 14216  store i8 %in.elt, ptr %out.elt14.ptr, align 2217  %out.elt15.ptr = getelementptr i8, ptr %out.vec.ptr, i64 15218  store i8 %in.elt, ptr %out.elt15.ptr, align 1219  ret void220}221 222define void @vec128_i16(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {223; ALL-LABEL: vec128_i16:224; ALL:       # %bb.0:225; ALL-NEXT:    movl (%rdi), %eax226; ALL-NEXT:    notl %eax227; ALL-NEXT:    movw %ax, (%rsi)228; ALL-NEXT:    movw %ax, 2(%rsi)229; ALL-NEXT:    movw %ax, 4(%rsi)230; ALL-NEXT:    movw %ax, 6(%rsi)231; ALL-NEXT:    movw %ax, 8(%rsi)232; ALL-NEXT:    movw %ax, 10(%rsi)233; ALL-NEXT:    movw %ax, 12(%rsi)234; ALL-NEXT:    movw %ax, 14(%rsi)235; ALL-NEXT:    retq236  %in.elt.not = load i16, ptr %in.elt.ptr, align 64237  %in.elt = xor i16 %in.elt.not, -1238  %out.elt0.ptr = getelementptr i16, ptr %out.vec.ptr, i64 0239  store i16 %in.elt, ptr %out.elt0.ptr, align 64240  %out.elt1.ptr = getelementptr i16, ptr %out.vec.ptr, i64 1241  store i16 %in.elt, ptr %out.elt1.ptr, align 2242  %out.elt2.ptr = getelementptr i16, ptr %out.vec.ptr, i64 2243  store i16 %in.elt, ptr %out.elt2.ptr, align 4244  %out.elt3.ptr = getelementptr i16, ptr %out.vec.ptr, i64 3245  store i16 %in.elt, ptr %out.elt3.ptr, align 2246  %out.elt4.ptr = getelementptr i16, ptr %out.vec.ptr, i64 4247  store i16 %in.elt, ptr %out.elt4.ptr, align 8248  %out.elt5.ptr = getelementptr i16, ptr %out.vec.ptr, i64 5249  store i16 %in.elt, ptr %out.elt5.ptr, align 2250  %out.elt6.ptr = getelementptr i16, ptr %out.vec.ptr, i64 6251  store i16 %in.elt, ptr %out.elt6.ptr, align 4252  %out.elt7.ptr = getelementptr i16, ptr %out.vec.ptr, i64 7253  store i16 %in.elt, ptr %out.elt7.ptr, align 2254  ret void255}256 257define void @vec128_i32(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {258; ALL-LABEL: vec128_i32:259; ALL:       # %bb.0:260; ALL-NEXT:    movl (%rdi), %eax261; ALL-NEXT:    notl %eax262; ALL-NEXT:    movl %eax, (%rsi)263; ALL-NEXT:    movl %eax, 4(%rsi)264; ALL-NEXT:    movl %eax, 8(%rsi)265; ALL-NEXT:    movl %eax, 12(%rsi)266; ALL-NEXT:    retq267  %in.elt.not = load i32, ptr %in.elt.ptr, align 64268  %in.elt = xor i32 %in.elt.not, -1269  %out.elt0.ptr = getelementptr i32, ptr %out.vec.ptr, i64 0270  store i32 %in.elt, ptr %out.elt0.ptr, align 64271  %out.elt1.ptr = getelementptr i32, ptr %out.vec.ptr, i64 1272  store i32 %in.elt, ptr %out.elt1.ptr, align 4273  %out.elt2.ptr = getelementptr i32, ptr %out.vec.ptr, i64 2274  store i32 %in.elt, ptr %out.elt2.ptr, align 8275  %out.elt3.ptr = getelementptr i32, ptr %out.vec.ptr, i64 3276  store i32 %in.elt, ptr %out.elt3.ptr, align 4277  ret void278}279 280define void @vec128_float(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {281; ALL-LABEL: vec128_float:282; ALL:       # %bb.0:283; ALL-NEXT:    movl (%rdi), %eax284; ALL-NEXT:    notl %eax285; ALL-NEXT:    movl %eax, (%rsi)286; ALL-NEXT:    movl %eax, 4(%rsi)287; ALL-NEXT:    movl %eax, 8(%rsi)288; ALL-NEXT:    movl %eax, 12(%rsi)289; ALL-NEXT:    retq290  %in.elt.not = load i32, ptr %in.elt.ptr, align 64291  %in.elt.int = xor i32 %in.elt.not, -1292  %in.elt = bitcast i32 %in.elt.int to float293  %out.elt0.ptr = getelementptr float, ptr %out.vec.ptr, i64 0294  store float %in.elt, ptr %out.elt0.ptr, align 64295  %out.elt1.ptr = getelementptr float, ptr %out.vec.ptr, i64 1296  store float %in.elt, ptr %out.elt1.ptr, align 4297  %out.elt2.ptr = getelementptr float, ptr %out.vec.ptr, i64 2298  store float %in.elt, ptr %out.elt2.ptr, align 8299  %out.elt3.ptr = getelementptr float, ptr %out.vec.ptr, i64 3300  store float %in.elt, ptr %out.elt3.ptr, align 4301  ret void302}303 304define void @vec128_i64(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {305; ALL-LABEL: vec128_i64:306; ALL:       # %bb.0:307; ALL-NEXT:    movq (%rdi), %rax308; ALL-NEXT:    notq %rax309; ALL-NEXT:    movq %rax, (%rsi)310; ALL-NEXT:    movq %rax, 8(%rsi)311; ALL-NEXT:    retq312  %in.elt.not = load i64, ptr %in.elt.ptr, align 64313  %in.elt = xor i64 %in.elt.not, -1314  %out.elt0.ptr = getelementptr i64, ptr %out.vec.ptr, i64 0315  store i64 %in.elt, ptr %out.elt0.ptr, align 64316  %out.elt1.ptr = getelementptr i64, ptr %out.vec.ptr, i64 1317  store i64 %in.elt, ptr %out.elt1.ptr, align 8318  ret void319}320 321define void @vec128_double(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {322; ALL-LABEL: vec128_double:323; ALL:       # %bb.0:324; ALL-NEXT:    movq (%rdi), %rax325; ALL-NEXT:    notq %rax326; ALL-NEXT:    movq %rax, (%rsi)327; ALL-NEXT:    movq %rax, 8(%rsi)328; ALL-NEXT:    retq329  %in.elt.not = load i64, ptr %in.elt.ptr, align 64330  %in.elt.int = xor i64 %in.elt.not, -1331  %in.elt = bitcast i64 %in.elt.int to double332  %out.elt0.ptr = getelementptr double, ptr %out.vec.ptr, i64 0333  store double %in.elt, ptr %out.elt0.ptr, align 64334  %out.elt1.ptr = getelementptr double, ptr %out.vec.ptr, i64 1335  store double %in.elt, ptr %out.elt1.ptr, align 8336  ret void337}338 339define void @vec256_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {340; ALL-LABEL: vec256_i8:341; ALL:       # %bb.0:342; ALL-NEXT:    movzbl (%rdi), %eax343; ALL-NEXT:    notb %al344; ALL-NEXT:    movb %al, (%rsi)345; ALL-NEXT:    movb %al, 1(%rsi)346; ALL-NEXT:    movb %al, 2(%rsi)347; ALL-NEXT:    movb %al, 3(%rsi)348; ALL-NEXT:    movb %al, 4(%rsi)349; ALL-NEXT:    movb %al, 5(%rsi)350; ALL-NEXT:    movb %al, 6(%rsi)351; ALL-NEXT:    movb %al, 7(%rsi)352; ALL-NEXT:    movb %al, 8(%rsi)353; ALL-NEXT:    movb %al, 9(%rsi)354; ALL-NEXT:    movb %al, 10(%rsi)355; ALL-NEXT:    movb %al, 11(%rsi)356; ALL-NEXT:    movb %al, 12(%rsi)357; ALL-NEXT:    movb %al, 13(%rsi)358; ALL-NEXT:    movb %al, 14(%rsi)359; ALL-NEXT:    movb %al, 15(%rsi)360; ALL-NEXT:    movb %al, 16(%rsi)361; ALL-NEXT:    movb %al, 17(%rsi)362; ALL-NEXT:    movb %al, 18(%rsi)363; ALL-NEXT:    movb %al, 19(%rsi)364; ALL-NEXT:    movb %al, 20(%rsi)365; ALL-NEXT:    movb %al, 21(%rsi)366; ALL-NEXT:    movb %al, 22(%rsi)367; ALL-NEXT:    movb %al, 23(%rsi)368; ALL-NEXT:    movb %al, 24(%rsi)369; ALL-NEXT:    movb %al, 25(%rsi)370; ALL-NEXT:    movb %al, 26(%rsi)371; ALL-NEXT:    movb %al, 27(%rsi)372; ALL-NEXT:    movb %al, 28(%rsi)373; ALL-NEXT:    movb %al, 29(%rsi)374; ALL-NEXT:    movb %al, 30(%rsi)375; ALL-NEXT:    movb %al, 31(%rsi)376; ALL-NEXT:    retq377  %in.elt.not = load i8, ptr %in.elt.ptr, align 64378  %in.elt = xor i8 %in.elt.not, -1379  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 0380  store i8 %in.elt, ptr %out.elt0.ptr, align 64381  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 1382  store i8 %in.elt, ptr %out.elt1.ptr, align 1383  %out.elt2.ptr = getelementptr i8, ptr %out.vec.ptr, i64 2384  store i8 %in.elt, ptr %out.elt2.ptr, align 2385  %out.elt3.ptr = getelementptr i8, ptr %out.vec.ptr, i64 3386  store i8 %in.elt, ptr %out.elt3.ptr, align 1387  %out.elt4.ptr = getelementptr i8, ptr %out.vec.ptr, i64 4388  store i8 %in.elt, ptr %out.elt4.ptr, align 4389  %out.elt5.ptr = getelementptr i8, ptr %out.vec.ptr, i64 5390  store i8 %in.elt, ptr %out.elt5.ptr, align 1391  %out.elt6.ptr = getelementptr i8, ptr %out.vec.ptr, i64 6392  store i8 %in.elt, ptr %out.elt6.ptr, align 2393  %out.elt7.ptr = getelementptr i8, ptr %out.vec.ptr, i64 7394  store i8 %in.elt, ptr %out.elt7.ptr, align 1395  %out.elt8.ptr = getelementptr i8, ptr %out.vec.ptr, i64 8396  store i8 %in.elt, ptr %out.elt8.ptr, align 8397  %out.elt9.ptr = getelementptr i8, ptr %out.vec.ptr, i64 9398  store i8 %in.elt, ptr %out.elt9.ptr, align 1399  %out.elt10.ptr = getelementptr i8, ptr %out.vec.ptr, i64 10400  store i8 %in.elt, ptr %out.elt10.ptr, align 2401  %out.elt11.ptr = getelementptr i8, ptr %out.vec.ptr, i64 11402  store i8 %in.elt, ptr %out.elt11.ptr, align 1403  %out.elt12.ptr = getelementptr i8, ptr %out.vec.ptr, i64 12404  store i8 %in.elt, ptr %out.elt12.ptr, align 4405  %out.elt13.ptr = getelementptr i8, ptr %out.vec.ptr, i64 13406  store i8 %in.elt, ptr %out.elt13.ptr, align 1407  %out.elt14.ptr = getelementptr i8, ptr %out.vec.ptr, i64 14408  store i8 %in.elt, ptr %out.elt14.ptr, align 2409  %out.elt15.ptr = getelementptr i8, ptr %out.vec.ptr, i64 15410  store i8 %in.elt, ptr %out.elt15.ptr, align 1411  %out.elt16.ptr = getelementptr i8, ptr %out.vec.ptr, i64 16412  store i8 %in.elt, ptr %out.elt16.ptr, align 16413  %out.elt17.ptr = getelementptr i8, ptr %out.vec.ptr, i64 17414  store i8 %in.elt, ptr %out.elt17.ptr, align 1415  %out.elt18.ptr = getelementptr i8, ptr %out.vec.ptr, i64 18416  store i8 %in.elt, ptr %out.elt18.ptr, align 2417  %out.elt19.ptr = getelementptr i8, ptr %out.vec.ptr, i64 19418  store i8 %in.elt, ptr %out.elt19.ptr, align 1419  %out.elt20.ptr = getelementptr i8, ptr %out.vec.ptr, i64 20420  store i8 %in.elt, ptr %out.elt20.ptr, align 4421  %out.elt21.ptr = getelementptr i8, ptr %out.vec.ptr, i64 21422  store i8 %in.elt, ptr %out.elt21.ptr, align 1423  %out.elt22.ptr = getelementptr i8, ptr %out.vec.ptr, i64 22424  store i8 %in.elt, ptr %out.elt22.ptr, align 2425  %out.elt23.ptr = getelementptr i8, ptr %out.vec.ptr, i64 23426  store i8 %in.elt, ptr %out.elt23.ptr, align 1427  %out.elt24.ptr = getelementptr i8, ptr %out.vec.ptr, i64 24428  store i8 %in.elt, ptr %out.elt24.ptr, align 8429  %out.elt25.ptr = getelementptr i8, ptr %out.vec.ptr, i64 25430  store i8 %in.elt, ptr %out.elt25.ptr, align 1431  %out.elt26.ptr = getelementptr i8, ptr %out.vec.ptr, i64 26432  store i8 %in.elt, ptr %out.elt26.ptr, align 2433  %out.elt27.ptr = getelementptr i8, ptr %out.vec.ptr, i64 27434  store i8 %in.elt, ptr %out.elt27.ptr, align 1435  %out.elt28.ptr = getelementptr i8, ptr %out.vec.ptr, i64 28436  store i8 %in.elt, ptr %out.elt28.ptr, align 4437  %out.elt29.ptr = getelementptr i8, ptr %out.vec.ptr, i64 29438  store i8 %in.elt, ptr %out.elt29.ptr, align 1439  %out.elt30.ptr = getelementptr i8, ptr %out.vec.ptr, i64 30440  store i8 %in.elt, ptr %out.elt30.ptr, align 2441  %out.elt31.ptr = getelementptr i8, ptr %out.vec.ptr, i64 31442  store i8 %in.elt, ptr %out.elt31.ptr, align 1443  ret void444}445 446define void @vec256_i16(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {447; ALL-LABEL: vec256_i16:448; ALL:       # %bb.0:449; ALL-NEXT:    movl (%rdi), %eax450; ALL-NEXT:    notl %eax451; ALL-NEXT:    movw %ax, (%rsi)452; ALL-NEXT:    movw %ax, 2(%rsi)453; ALL-NEXT:    movw %ax, 4(%rsi)454; ALL-NEXT:    movw %ax, 6(%rsi)455; ALL-NEXT:    movw %ax, 8(%rsi)456; ALL-NEXT:    movw %ax, 10(%rsi)457; ALL-NEXT:    movw %ax, 12(%rsi)458; ALL-NEXT:    movw %ax, 14(%rsi)459; ALL-NEXT:    movw %ax, 16(%rsi)460; ALL-NEXT:    movw %ax, 18(%rsi)461; ALL-NEXT:    movw %ax, 20(%rsi)462; ALL-NEXT:    movw %ax, 22(%rsi)463; ALL-NEXT:    movw %ax, 24(%rsi)464; ALL-NEXT:    movw %ax, 26(%rsi)465; ALL-NEXT:    movw %ax, 28(%rsi)466; ALL-NEXT:    movw %ax, 30(%rsi)467; ALL-NEXT:    retq468  %in.elt.not = load i16, ptr %in.elt.ptr, align 64469  %in.elt = xor i16 %in.elt.not, -1470  %out.elt0.ptr = getelementptr i16, ptr %out.vec.ptr, i64 0471  store i16 %in.elt, ptr %out.elt0.ptr, align 64472  %out.elt1.ptr = getelementptr i16, ptr %out.vec.ptr, i64 1473  store i16 %in.elt, ptr %out.elt1.ptr, align 2474  %out.elt2.ptr = getelementptr i16, ptr %out.vec.ptr, i64 2475  store i16 %in.elt, ptr %out.elt2.ptr, align 4476  %out.elt3.ptr = getelementptr i16, ptr %out.vec.ptr, i64 3477  store i16 %in.elt, ptr %out.elt3.ptr, align 2478  %out.elt4.ptr = getelementptr i16, ptr %out.vec.ptr, i64 4479  store i16 %in.elt, ptr %out.elt4.ptr, align 8480  %out.elt5.ptr = getelementptr i16, ptr %out.vec.ptr, i64 5481  store i16 %in.elt, ptr %out.elt5.ptr, align 2482  %out.elt6.ptr = getelementptr i16, ptr %out.vec.ptr, i64 6483  store i16 %in.elt, ptr %out.elt6.ptr, align 4484  %out.elt7.ptr = getelementptr i16, ptr %out.vec.ptr, i64 7485  store i16 %in.elt, ptr %out.elt7.ptr, align 2486  %out.elt8.ptr = getelementptr i16, ptr %out.vec.ptr, i64 8487  store i16 %in.elt, ptr %out.elt8.ptr, align 16488  %out.elt9.ptr = getelementptr i16, ptr %out.vec.ptr, i64 9489  store i16 %in.elt, ptr %out.elt9.ptr, align 2490  %out.elt10.ptr = getelementptr i16, ptr %out.vec.ptr, i64 10491  store i16 %in.elt, ptr %out.elt10.ptr, align 4492  %out.elt11.ptr = getelementptr i16, ptr %out.vec.ptr, i64 11493  store i16 %in.elt, ptr %out.elt11.ptr, align 2494  %out.elt12.ptr = getelementptr i16, ptr %out.vec.ptr, i64 12495  store i16 %in.elt, ptr %out.elt12.ptr, align 8496  %out.elt13.ptr = getelementptr i16, ptr %out.vec.ptr, i64 13497  store i16 %in.elt, ptr %out.elt13.ptr, align 2498  %out.elt14.ptr = getelementptr i16, ptr %out.vec.ptr, i64 14499  store i16 %in.elt, ptr %out.elt14.ptr, align 4500  %out.elt15.ptr = getelementptr i16, ptr %out.vec.ptr, i64 15501  store i16 %in.elt, ptr %out.elt15.ptr, align 2502  ret void503}504 505define void @vec256_i32(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {506; ALL-LABEL: vec256_i32:507; ALL:       # %bb.0:508; ALL-NEXT:    movl (%rdi), %eax509; ALL-NEXT:    notl %eax510; ALL-NEXT:    movl %eax, (%rsi)511; ALL-NEXT:    movl %eax, 4(%rsi)512; ALL-NEXT:    movl %eax, 8(%rsi)513; ALL-NEXT:    movl %eax, 12(%rsi)514; ALL-NEXT:    movl %eax, 16(%rsi)515; ALL-NEXT:    movl %eax, 20(%rsi)516; ALL-NEXT:    movl %eax, 24(%rsi)517; ALL-NEXT:    movl %eax, 28(%rsi)518; ALL-NEXT:    retq519  %in.elt.not = load i32, ptr %in.elt.ptr, align 64520  %in.elt = xor i32 %in.elt.not, -1521  %out.elt0.ptr = getelementptr i32, ptr %out.vec.ptr, i64 0522  store i32 %in.elt, ptr %out.elt0.ptr, align 64523  %out.elt1.ptr = getelementptr i32, ptr %out.vec.ptr, i64 1524  store i32 %in.elt, ptr %out.elt1.ptr, align 4525  %out.elt2.ptr = getelementptr i32, ptr %out.vec.ptr, i64 2526  store i32 %in.elt, ptr %out.elt2.ptr, align 8527  %out.elt3.ptr = getelementptr i32, ptr %out.vec.ptr, i64 3528  store i32 %in.elt, ptr %out.elt3.ptr, align 4529  %out.elt4.ptr = getelementptr i32, ptr %out.vec.ptr, i64 4530  store i32 %in.elt, ptr %out.elt4.ptr, align 16531  %out.elt5.ptr = getelementptr i32, ptr %out.vec.ptr, i64 5532  store i32 %in.elt, ptr %out.elt5.ptr, align 4533  %out.elt6.ptr = getelementptr i32, ptr %out.vec.ptr, i64 6534  store i32 %in.elt, ptr %out.elt6.ptr, align 8535  %out.elt7.ptr = getelementptr i32, ptr %out.vec.ptr, i64 7536  store i32 %in.elt, ptr %out.elt7.ptr, align 4537  ret void538}539 540define void @vec256_float(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {541; ALL-LABEL: vec256_float:542; ALL:       # %bb.0:543; ALL-NEXT:    movl (%rdi), %eax544; ALL-NEXT:    notl %eax545; ALL-NEXT:    movl %eax, (%rsi)546; ALL-NEXT:    movl %eax, 4(%rsi)547; ALL-NEXT:    movl %eax, 8(%rsi)548; ALL-NEXT:    movl %eax, 12(%rsi)549; ALL-NEXT:    movl %eax, 16(%rsi)550; ALL-NEXT:    movl %eax, 20(%rsi)551; ALL-NEXT:    movl %eax, 24(%rsi)552; ALL-NEXT:    movl %eax, 28(%rsi)553; ALL-NEXT:    retq554  %in.elt.not = load i32, ptr %in.elt.ptr, align 64555  %in.elt.int = xor i32 %in.elt.not, -1556  %in.elt = bitcast i32 %in.elt.int to float557  %out.elt0.ptr = getelementptr float, ptr %out.vec.ptr, i64 0558  store float %in.elt, ptr %out.elt0.ptr, align 64559  %out.elt1.ptr = getelementptr float, ptr %out.vec.ptr, i64 1560  store float %in.elt, ptr %out.elt1.ptr, align 4561  %out.elt2.ptr = getelementptr float, ptr %out.vec.ptr, i64 2562  store float %in.elt, ptr %out.elt2.ptr, align 8563  %out.elt3.ptr = getelementptr float, ptr %out.vec.ptr, i64 3564  store float %in.elt, ptr %out.elt3.ptr, align 4565  %out.elt4.ptr = getelementptr float, ptr %out.vec.ptr, i64 4566  store float %in.elt, ptr %out.elt4.ptr, align 16567  %out.elt5.ptr = getelementptr float, ptr %out.vec.ptr, i64 5568  store float %in.elt, ptr %out.elt5.ptr, align 4569  %out.elt6.ptr = getelementptr float, ptr %out.vec.ptr, i64 6570  store float %in.elt, ptr %out.elt6.ptr, align 8571  %out.elt7.ptr = getelementptr float, ptr %out.vec.ptr, i64 7572  store float %in.elt, ptr %out.elt7.ptr, align 4573  ret void574}575 576define void @vec256_i64(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {577; ALL-LABEL: vec256_i64:578; ALL:       # %bb.0:579; ALL-NEXT:    movq (%rdi), %rax580; ALL-NEXT:    notq %rax581; ALL-NEXT:    movq %rax, (%rsi)582; ALL-NEXT:    movq %rax, 8(%rsi)583; ALL-NEXT:    movq %rax, 16(%rsi)584; ALL-NEXT:    movq %rax, 24(%rsi)585; ALL-NEXT:    retq586  %in.elt.not = load i64, ptr %in.elt.ptr, align 64587  %in.elt = xor i64 %in.elt.not, -1588  %out.elt0.ptr = getelementptr i64, ptr %out.vec.ptr, i64 0589  store i64 %in.elt, ptr %out.elt0.ptr, align 64590  %out.elt1.ptr = getelementptr i64, ptr %out.vec.ptr, i64 1591  store i64 %in.elt, ptr %out.elt1.ptr, align 8592  %out.elt2.ptr = getelementptr i64, ptr %out.vec.ptr, i64 2593  store i64 %in.elt, ptr %out.elt2.ptr, align 16594  %out.elt3.ptr = getelementptr i64, ptr %out.vec.ptr, i64 3595  store i64 %in.elt, ptr %out.elt3.ptr, align 8596  ret void597}598 599define void @vec256_double(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {600; ALL-LABEL: vec256_double:601; ALL:       # %bb.0:602; ALL-NEXT:    movq (%rdi), %rax603; ALL-NEXT:    notq %rax604; ALL-NEXT:    movq %rax, (%rsi)605; ALL-NEXT:    movq %rax, 8(%rsi)606; ALL-NEXT:    movq %rax, 16(%rsi)607; ALL-NEXT:    movq %rax, 24(%rsi)608; ALL-NEXT:    retq609  %in.elt.not = load i64, ptr %in.elt.ptr, align 64610  %in.elt.int = xor i64 %in.elt.not, -1611  %in.elt = bitcast i64 %in.elt.int to double612  %out.elt0.ptr = getelementptr double, ptr %out.vec.ptr, i64 0613  store double %in.elt, ptr %out.elt0.ptr, align 64614  %out.elt1.ptr = getelementptr double, ptr %out.vec.ptr, i64 1615  store double %in.elt, ptr %out.elt1.ptr, align 8616  %out.elt2.ptr = getelementptr double, ptr %out.vec.ptr, i64 2617  store double %in.elt, ptr %out.elt2.ptr, align 16618  %out.elt3.ptr = getelementptr double, ptr %out.vec.ptr, i64 3619  store double %in.elt, ptr %out.elt3.ptr, align 8620  ret void621}622 623define void @vec256_i128(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {624; ALL-LABEL: vec256_i128:625; ALL:       # %bb.0:626; ALL-NEXT:    movq (%rdi), %rax627; ALL-NEXT:    movq 8(%rdi), %rcx628; ALL-NEXT:    notq %rcx629; ALL-NEXT:    notq %rax630; ALL-NEXT:    movq %rax, (%rsi)631; ALL-NEXT:    movq %rcx, 8(%rsi)632; ALL-NEXT:    movq %rcx, 24(%rsi)633; ALL-NEXT:    movq %rax, 16(%rsi)634; ALL-NEXT:    retq635  %in.elt.not = load i128, ptr %in.elt.ptr, align 64636  %in.elt = xor i128 %in.elt.not, -1637  %out.elt0.ptr = getelementptr i128, ptr %out.vec.ptr, i64 0638  store i128 %in.elt, ptr %out.elt0.ptr, align 64639  %out.elt1.ptr = getelementptr i128, ptr %out.vec.ptr, i64 1640  store i128 %in.elt, ptr %out.elt1.ptr, align 16641  ret void642}643 644define void @vec384_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {645; ALL-LABEL: vec384_i8:646; ALL:       # %bb.0:647; ALL-NEXT:    movzbl (%rdi), %eax648; ALL-NEXT:    notb %al649; ALL-NEXT:    movb %al, (%rsi)650; ALL-NEXT:    movb %al, 1(%rsi)651; ALL-NEXT:    movb %al, 2(%rsi)652; ALL-NEXT:    movb %al, 3(%rsi)653; ALL-NEXT:    movb %al, 4(%rsi)654; ALL-NEXT:    movb %al, 5(%rsi)655; ALL-NEXT:    movb %al, 6(%rsi)656; ALL-NEXT:    movb %al, 7(%rsi)657; ALL-NEXT:    movb %al, 8(%rsi)658; ALL-NEXT:    movb %al, 9(%rsi)659; ALL-NEXT:    movb %al, 10(%rsi)660; ALL-NEXT:    movb %al, 11(%rsi)661; ALL-NEXT:    movb %al, 12(%rsi)662; ALL-NEXT:    movb %al, 13(%rsi)663; ALL-NEXT:    movb %al, 14(%rsi)664; ALL-NEXT:    movb %al, 15(%rsi)665; ALL-NEXT:    movb %al, 16(%rsi)666; ALL-NEXT:    movb %al, 17(%rsi)667; ALL-NEXT:    movb %al, 18(%rsi)668; ALL-NEXT:    movb %al, 19(%rsi)669; ALL-NEXT:    movb %al, 20(%rsi)670; ALL-NEXT:    movb %al, 21(%rsi)671; ALL-NEXT:    movb %al, 22(%rsi)672; ALL-NEXT:    movb %al, 23(%rsi)673; ALL-NEXT:    movb %al, 24(%rsi)674; ALL-NEXT:    movb %al, 25(%rsi)675; ALL-NEXT:    movb %al, 26(%rsi)676; ALL-NEXT:    movb %al, 27(%rsi)677; ALL-NEXT:    movb %al, 28(%rsi)678; ALL-NEXT:    movb %al, 29(%rsi)679; ALL-NEXT:    movb %al, 30(%rsi)680; ALL-NEXT:    movb %al, 31(%rsi)681; ALL-NEXT:    movb %al, 32(%rsi)682; ALL-NEXT:    movb %al, 33(%rsi)683; ALL-NEXT:    movb %al, 34(%rsi)684; ALL-NEXT:    movb %al, 35(%rsi)685; ALL-NEXT:    movb %al, 36(%rsi)686; ALL-NEXT:    movb %al, 37(%rsi)687; ALL-NEXT:    movb %al, 38(%rsi)688; ALL-NEXT:    movb %al, 39(%rsi)689; ALL-NEXT:    movb %al, 40(%rsi)690; ALL-NEXT:    movb %al, 41(%rsi)691; ALL-NEXT:    movb %al, 42(%rsi)692; ALL-NEXT:    movb %al, 43(%rsi)693; ALL-NEXT:    movb %al, 44(%rsi)694; ALL-NEXT:    movb %al, 45(%rsi)695; ALL-NEXT:    movb %al, 46(%rsi)696; ALL-NEXT:    movb %al, 47(%rsi)697; ALL-NEXT:    retq698  %in.elt.not = load i8, ptr %in.elt.ptr, align 64699  %in.elt = xor i8 %in.elt.not, -1700  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 0701  store i8 %in.elt, ptr %out.elt0.ptr, align 64702  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 1703  store i8 %in.elt, ptr %out.elt1.ptr, align 1704  %out.elt2.ptr = getelementptr i8, ptr %out.vec.ptr, i64 2705  store i8 %in.elt, ptr %out.elt2.ptr, align 2706  %out.elt3.ptr = getelementptr i8, ptr %out.vec.ptr, i64 3707  store i8 %in.elt, ptr %out.elt3.ptr, align 1708  %out.elt4.ptr = getelementptr i8, ptr %out.vec.ptr, i64 4709  store i8 %in.elt, ptr %out.elt4.ptr, align 4710  %out.elt5.ptr = getelementptr i8, ptr %out.vec.ptr, i64 5711  store i8 %in.elt, ptr %out.elt5.ptr, align 1712  %out.elt6.ptr = getelementptr i8, ptr %out.vec.ptr, i64 6713  store i8 %in.elt, ptr %out.elt6.ptr, align 2714  %out.elt7.ptr = getelementptr i8, ptr %out.vec.ptr, i64 7715  store i8 %in.elt, ptr %out.elt7.ptr, align 1716  %out.elt8.ptr = getelementptr i8, ptr %out.vec.ptr, i64 8717  store i8 %in.elt, ptr %out.elt8.ptr, align 8718  %out.elt9.ptr = getelementptr i8, ptr %out.vec.ptr, i64 9719  store i8 %in.elt, ptr %out.elt9.ptr, align 1720  %out.elt10.ptr = getelementptr i8, ptr %out.vec.ptr, i64 10721  store i8 %in.elt, ptr %out.elt10.ptr, align 2722  %out.elt11.ptr = getelementptr i8, ptr %out.vec.ptr, i64 11723  store i8 %in.elt, ptr %out.elt11.ptr, align 1724  %out.elt12.ptr = getelementptr i8, ptr %out.vec.ptr, i64 12725  store i8 %in.elt, ptr %out.elt12.ptr, align 4726  %out.elt13.ptr = getelementptr i8, ptr %out.vec.ptr, i64 13727  store i8 %in.elt, ptr %out.elt13.ptr, align 1728  %out.elt14.ptr = getelementptr i8, ptr %out.vec.ptr, i64 14729  store i8 %in.elt, ptr %out.elt14.ptr, align 2730  %out.elt15.ptr = getelementptr i8, ptr %out.vec.ptr, i64 15731  store i8 %in.elt, ptr %out.elt15.ptr, align 1732  %out.elt16.ptr = getelementptr i8, ptr %out.vec.ptr, i64 16733  store i8 %in.elt, ptr %out.elt16.ptr, align 16734  %out.elt17.ptr = getelementptr i8, ptr %out.vec.ptr, i64 17735  store i8 %in.elt, ptr %out.elt17.ptr, align 1736  %out.elt18.ptr = getelementptr i8, ptr %out.vec.ptr, i64 18737  store i8 %in.elt, ptr %out.elt18.ptr, align 2738  %out.elt19.ptr = getelementptr i8, ptr %out.vec.ptr, i64 19739  store i8 %in.elt, ptr %out.elt19.ptr, align 1740  %out.elt20.ptr = getelementptr i8, ptr %out.vec.ptr, i64 20741  store i8 %in.elt, ptr %out.elt20.ptr, align 4742  %out.elt21.ptr = getelementptr i8, ptr %out.vec.ptr, i64 21743  store i8 %in.elt, ptr %out.elt21.ptr, align 1744  %out.elt22.ptr = getelementptr i8, ptr %out.vec.ptr, i64 22745  store i8 %in.elt, ptr %out.elt22.ptr, align 2746  %out.elt23.ptr = getelementptr i8, ptr %out.vec.ptr, i64 23747  store i8 %in.elt, ptr %out.elt23.ptr, align 1748  %out.elt24.ptr = getelementptr i8, ptr %out.vec.ptr, i64 24749  store i8 %in.elt, ptr %out.elt24.ptr, align 8750  %out.elt25.ptr = getelementptr i8, ptr %out.vec.ptr, i64 25751  store i8 %in.elt, ptr %out.elt25.ptr, align 1752  %out.elt26.ptr = getelementptr i8, ptr %out.vec.ptr, i64 26753  store i8 %in.elt, ptr %out.elt26.ptr, align 2754  %out.elt27.ptr = getelementptr i8, ptr %out.vec.ptr, i64 27755  store i8 %in.elt, ptr %out.elt27.ptr, align 1756  %out.elt28.ptr = getelementptr i8, ptr %out.vec.ptr, i64 28757  store i8 %in.elt, ptr %out.elt28.ptr, align 4758  %out.elt29.ptr = getelementptr i8, ptr %out.vec.ptr, i64 29759  store i8 %in.elt, ptr %out.elt29.ptr, align 1760  %out.elt30.ptr = getelementptr i8, ptr %out.vec.ptr, i64 30761  store i8 %in.elt, ptr %out.elt30.ptr, align 2762  %out.elt31.ptr = getelementptr i8, ptr %out.vec.ptr, i64 31763  store i8 %in.elt, ptr %out.elt31.ptr, align 1764  %out.elt32.ptr = getelementptr i8, ptr %out.vec.ptr, i64 32765  store i8 %in.elt, ptr %out.elt32.ptr, align 32766  %out.elt33.ptr = getelementptr i8, ptr %out.vec.ptr, i64 33767  store i8 %in.elt, ptr %out.elt33.ptr, align 1768  %out.elt34.ptr = getelementptr i8, ptr %out.vec.ptr, i64 34769  store i8 %in.elt, ptr %out.elt34.ptr, align 2770  %out.elt35.ptr = getelementptr i8, ptr %out.vec.ptr, i64 35771  store i8 %in.elt, ptr %out.elt35.ptr, align 1772  %out.elt36.ptr = getelementptr i8, ptr %out.vec.ptr, i64 36773  store i8 %in.elt, ptr %out.elt36.ptr, align 4774  %out.elt37.ptr = getelementptr i8, ptr %out.vec.ptr, i64 37775  store i8 %in.elt, ptr %out.elt37.ptr, align 1776  %out.elt38.ptr = getelementptr i8, ptr %out.vec.ptr, i64 38777  store i8 %in.elt, ptr %out.elt38.ptr, align 2778  %out.elt39.ptr = getelementptr i8, ptr %out.vec.ptr, i64 39779  store i8 %in.elt, ptr %out.elt39.ptr, align 1780  %out.elt40.ptr = getelementptr i8, ptr %out.vec.ptr, i64 40781  store i8 %in.elt, ptr %out.elt40.ptr, align 8782  %out.elt41.ptr = getelementptr i8, ptr %out.vec.ptr, i64 41783  store i8 %in.elt, ptr %out.elt41.ptr, align 1784  %out.elt42.ptr = getelementptr i8, ptr %out.vec.ptr, i64 42785  store i8 %in.elt, ptr %out.elt42.ptr, align 2786  %out.elt43.ptr = getelementptr i8, ptr %out.vec.ptr, i64 43787  store i8 %in.elt, ptr %out.elt43.ptr, align 1788  %out.elt44.ptr = getelementptr i8, ptr %out.vec.ptr, i64 44789  store i8 %in.elt, ptr %out.elt44.ptr, align 4790  %out.elt45.ptr = getelementptr i8, ptr %out.vec.ptr, i64 45791  store i8 %in.elt, ptr %out.elt45.ptr, align 1792  %out.elt46.ptr = getelementptr i8, ptr %out.vec.ptr, i64 46793  store i8 %in.elt, ptr %out.elt46.ptr, align 2794  %out.elt47.ptr = getelementptr i8, ptr %out.vec.ptr, i64 47795  store i8 %in.elt, ptr %out.elt47.ptr, align 1796  ret void797}798 799define void @vec384_i16(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {800; ALL-LABEL: vec384_i16:801; ALL:       # %bb.0:802; ALL-NEXT:    movl (%rdi), %eax803; ALL-NEXT:    notl %eax804; ALL-NEXT:    movw %ax, (%rsi)805; ALL-NEXT:    movw %ax, 2(%rsi)806; ALL-NEXT:    movw %ax, 4(%rsi)807; ALL-NEXT:    movw %ax, 6(%rsi)808; ALL-NEXT:    movw %ax, 8(%rsi)809; ALL-NEXT:    movw %ax, 10(%rsi)810; ALL-NEXT:    movw %ax, 12(%rsi)811; ALL-NEXT:    movw %ax, 14(%rsi)812; ALL-NEXT:    movw %ax, 16(%rsi)813; ALL-NEXT:    movw %ax, 18(%rsi)814; ALL-NEXT:    movw %ax, 20(%rsi)815; ALL-NEXT:    movw %ax, 22(%rsi)816; ALL-NEXT:    movw %ax, 24(%rsi)817; ALL-NEXT:    movw %ax, 26(%rsi)818; ALL-NEXT:    movw %ax, 28(%rsi)819; ALL-NEXT:    movw %ax, 30(%rsi)820; ALL-NEXT:    movw %ax, 32(%rsi)821; ALL-NEXT:    movw %ax, 34(%rsi)822; ALL-NEXT:    movw %ax, 36(%rsi)823; ALL-NEXT:    movw %ax, 38(%rsi)824; ALL-NEXT:    movw %ax, 40(%rsi)825; ALL-NEXT:    movw %ax, 42(%rsi)826; ALL-NEXT:    movw %ax, 44(%rsi)827; ALL-NEXT:    movw %ax, 46(%rsi)828; ALL-NEXT:    retq829  %in.elt.not = load i16, ptr %in.elt.ptr, align 64830  %in.elt = xor i16 %in.elt.not, -1831  %out.elt0.ptr = getelementptr i16, ptr %out.vec.ptr, i64 0832  store i16 %in.elt, ptr %out.elt0.ptr, align 64833  %out.elt1.ptr = getelementptr i16, ptr %out.vec.ptr, i64 1834  store i16 %in.elt, ptr %out.elt1.ptr, align 2835  %out.elt2.ptr = getelementptr i16, ptr %out.vec.ptr, i64 2836  store i16 %in.elt, ptr %out.elt2.ptr, align 4837  %out.elt3.ptr = getelementptr i16, ptr %out.vec.ptr, i64 3838  store i16 %in.elt, ptr %out.elt3.ptr, align 2839  %out.elt4.ptr = getelementptr i16, ptr %out.vec.ptr, i64 4840  store i16 %in.elt, ptr %out.elt4.ptr, align 8841  %out.elt5.ptr = getelementptr i16, ptr %out.vec.ptr, i64 5842  store i16 %in.elt, ptr %out.elt5.ptr, align 2843  %out.elt6.ptr = getelementptr i16, ptr %out.vec.ptr, i64 6844  store i16 %in.elt, ptr %out.elt6.ptr, align 4845  %out.elt7.ptr = getelementptr i16, ptr %out.vec.ptr, i64 7846  store i16 %in.elt, ptr %out.elt7.ptr, align 2847  %out.elt8.ptr = getelementptr i16, ptr %out.vec.ptr, i64 8848  store i16 %in.elt, ptr %out.elt8.ptr, align 16849  %out.elt9.ptr = getelementptr i16, ptr %out.vec.ptr, i64 9850  store i16 %in.elt, ptr %out.elt9.ptr, align 2851  %out.elt10.ptr = getelementptr i16, ptr %out.vec.ptr, i64 10852  store i16 %in.elt, ptr %out.elt10.ptr, align 4853  %out.elt11.ptr = getelementptr i16, ptr %out.vec.ptr, i64 11854  store i16 %in.elt, ptr %out.elt11.ptr, align 2855  %out.elt12.ptr = getelementptr i16, ptr %out.vec.ptr, i64 12856  store i16 %in.elt, ptr %out.elt12.ptr, align 8857  %out.elt13.ptr = getelementptr i16, ptr %out.vec.ptr, i64 13858  store i16 %in.elt, ptr %out.elt13.ptr, align 2859  %out.elt14.ptr = getelementptr i16, ptr %out.vec.ptr, i64 14860  store i16 %in.elt, ptr %out.elt14.ptr, align 4861  %out.elt15.ptr = getelementptr i16, ptr %out.vec.ptr, i64 15862  store i16 %in.elt, ptr %out.elt15.ptr, align 2863  %out.elt16.ptr = getelementptr i16, ptr %out.vec.ptr, i64 16864  store i16 %in.elt, ptr %out.elt16.ptr, align 32865  %out.elt17.ptr = getelementptr i16, ptr %out.vec.ptr, i64 17866  store i16 %in.elt, ptr %out.elt17.ptr, align 2867  %out.elt18.ptr = getelementptr i16, ptr %out.vec.ptr, i64 18868  store i16 %in.elt, ptr %out.elt18.ptr, align 4869  %out.elt19.ptr = getelementptr i16, ptr %out.vec.ptr, i64 19870  store i16 %in.elt, ptr %out.elt19.ptr, align 2871  %out.elt20.ptr = getelementptr i16, ptr %out.vec.ptr, i64 20872  store i16 %in.elt, ptr %out.elt20.ptr, align 8873  %out.elt21.ptr = getelementptr i16, ptr %out.vec.ptr, i64 21874  store i16 %in.elt, ptr %out.elt21.ptr, align 2875  %out.elt22.ptr = getelementptr i16, ptr %out.vec.ptr, i64 22876  store i16 %in.elt, ptr %out.elt22.ptr, align 4877  %out.elt23.ptr = getelementptr i16, ptr %out.vec.ptr, i64 23878  store i16 %in.elt, ptr %out.elt23.ptr, align 2879  ret void880}881 882define void @vec384_i32(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {883; ALL-LABEL: vec384_i32:884; ALL:       # %bb.0:885; ALL-NEXT:    movl (%rdi), %eax886; ALL-NEXT:    notl %eax887; ALL-NEXT:    movl %eax, (%rsi)888; ALL-NEXT:    movl %eax, 4(%rsi)889; ALL-NEXT:    movl %eax, 8(%rsi)890; ALL-NEXT:    movl %eax, 12(%rsi)891; ALL-NEXT:    movl %eax, 16(%rsi)892; ALL-NEXT:    movl %eax, 20(%rsi)893; ALL-NEXT:    movl %eax, 24(%rsi)894; ALL-NEXT:    movl %eax, 28(%rsi)895; ALL-NEXT:    movl %eax, 32(%rsi)896; ALL-NEXT:    movl %eax, 36(%rsi)897; ALL-NEXT:    movl %eax, 40(%rsi)898; ALL-NEXT:    movl %eax, 44(%rsi)899; ALL-NEXT:    retq900  %in.elt.not = load i32, ptr %in.elt.ptr, align 64901  %in.elt = xor i32 %in.elt.not, -1902  %out.elt0.ptr = getelementptr i32, ptr %out.vec.ptr, i64 0903  store i32 %in.elt, ptr %out.elt0.ptr, align 64904  %out.elt1.ptr = getelementptr i32, ptr %out.vec.ptr, i64 1905  store i32 %in.elt, ptr %out.elt1.ptr, align 4906  %out.elt2.ptr = getelementptr i32, ptr %out.vec.ptr, i64 2907  store i32 %in.elt, ptr %out.elt2.ptr, align 8908  %out.elt3.ptr = getelementptr i32, ptr %out.vec.ptr, i64 3909  store i32 %in.elt, ptr %out.elt3.ptr, align 4910  %out.elt4.ptr = getelementptr i32, ptr %out.vec.ptr, i64 4911  store i32 %in.elt, ptr %out.elt4.ptr, align 16912  %out.elt5.ptr = getelementptr i32, ptr %out.vec.ptr, i64 5913  store i32 %in.elt, ptr %out.elt5.ptr, align 4914  %out.elt6.ptr = getelementptr i32, ptr %out.vec.ptr, i64 6915  store i32 %in.elt, ptr %out.elt6.ptr, align 8916  %out.elt7.ptr = getelementptr i32, ptr %out.vec.ptr, i64 7917  store i32 %in.elt, ptr %out.elt7.ptr, align 4918  %out.elt8.ptr = getelementptr i32, ptr %out.vec.ptr, i64 8919  store i32 %in.elt, ptr %out.elt8.ptr, align 32920  %out.elt9.ptr = getelementptr i32, ptr %out.vec.ptr, i64 9921  store i32 %in.elt, ptr %out.elt9.ptr, align 4922  %out.elt10.ptr = getelementptr i32, ptr %out.vec.ptr, i64 10923  store i32 %in.elt, ptr %out.elt10.ptr, align 8924  %out.elt11.ptr = getelementptr i32, ptr %out.vec.ptr, i64 11925  store i32 %in.elt, ptr %out.elt11.ptr, align 4926  ret void927}928 929define void @vec384_float(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {930; ALL-LABEL: vec384_float:931; ALL:       # %bb.0:932; ALL-NEXT:    movl (%rdi), %eax933; ALL-NEXT:    notl %eax934; ALL-NEXT:    movl %eax, (%rsi)935; ALL-NEXT:    movl %eax, 4(%rsi)936; ALL-NEXT:    movl %eax, 8(%rsi)937; ALL-NEXT:    movl %eax, 12(%rsi)938; ALL-NEXT:    movl %eax, 16(%rsi)939; ALL-NEXT:    movl %eax, 20(%rsi)940; ALL-NEXT:    movl %eax, 24(%rsi)941; ALL-NEXT:    movl %eax, 28(%rsi)942; ALL-NEXT:    movl %eax, 32(%rsi)943; ALL-NEXT:    movl %eax, 36(%rsi)944; ALL-NEXT:    movl %eax, 40(%rsi)945; ALL-NEXT:    movl %eax, 44(%rsi)946; ALL-NEXT:    retq947  %in.elt.not = load i32, ptr %in.elt.ptr, align 64948  %in.elt.int = xor i32 %in.elt.not, -1949  %in.elt = bitcast i32 %in.elt.int to float950  %out.elt0.ptr = getelementptr float, ptr %out.vec.ptr, i64 0951  store float %in.elt, ptr %out.elt0.ptr, align 64952  %out.elt1.ptr = getelementptr float, ptr %out.vec.ptr, i64 1953  store float %in.elt, ptr %out.elt1.ptr, align 4954  %out.elt2.ptr = getelementptr float, ptr %out.vec.ptr, i64 2955  store float %in.elt, ptr %out.elt2.ptr, align 8956  %out.elt3.ptr = getelementptr float, ptr %out.vec.ptr, i64 3957  store float %in.elt, ptr %out.elt3.ptr, align 4958  %out.elt4.ptr = getelementptr float, ptr %out.vec.ptr, i64 4959  store float %in.elt, ptr %out.elt4.ptr, align 16960  %out.elt5.ptr = getelementptr float, ptr %out.vec.ptr, i64 5961  store float %in.elt, ptr %out.elt5.ptr, align 4962  %out.elt6.ptr = getelementptr float, ptr %out.vec.ptr, i64 6963  store float %in.elt, ptr %out.elt6.ptr, align 8964  %out.elt7.ptr = getelementptr float, ptr %out.vec.ptr, i64 7965  store float %in.elt, ptr %out.elt7.ptr, align 4966  %out.elt8.ptr = getelementptr float, ptr %out.vec.ptr, i64 8967  store float %in.elt, ptr %out.elt8.ptr, align 32968  %out.elt9.ptr = getelementptr float, ptr %out.vec.ptr, i64 9969  store float %in.elt, ptr %out.elt9.ptr, align 4970  %out.elt10.ptr = getelementptr float, ptr %out.vec.ptr, i64 10971  store float %in.elt, ptr %out.elt10.ptr, align 8972  %out.elt11.ptr = getelementptr float, ptr %out.vec.ptr, i64 11973  store float %in.elt, ptr %out.elt11.ptr, align 4974  ret void975}976 977define void @vec384_i64(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {978; ALL-LABEL: vec384_i64:979; ALL:       # %bb.0:980; ALL-NEXT:    movq (%rdi), %rax981; ALL-NEXT:    notq %rax982; ALL-NEXT:    movq %rax, (%rsi)983; ALL-NEXT:    movq %rax, 8(%rsi)984; ALL-NEXT:    movq %rax, 16(%rsi)985; ALL-NEXT:    movq %rax, 24(%rsi)986; ALL-NEXT:    movq %rax, 32(%rsi)987; ALL-NEXT:    movq %rax, 40(%rsi)988; ALL-NEXT:    retq989  %in.elt.not = load i64, ptr %in.elt.ptr, align 64990  %in.elt = xor i64 %in.elt.not, -1991  %out.elt0.ptr = getelementptr i64, ptr %out.vec.ptr, i64 0992  store i64 %in.elt, ptr %out.elt0.ptr, align 64993  %out.elt1.ptr = getelementptr i64, ptr %out.vec.ptr, i64 1994  store i64 %in.elt, ptr %out.elt1.ptr, align 8995  %out.elt2.ptr = getelementptr i64, ptr %out.vec.ptr, i64 2996  store i64 %in.elt, ptr %out.elt2.ptr, align 16997  %out.elt3.ptr = getelementptr i64, ptr %out.vec.ptr, i64 3998  store i64 %in.elt, ptr %out.elt3.ptr, align 8999  %out.elt4.ptr = getelementptr i64, ptr %out.vec.ptr, i64 41000  store i64 %in.elt, ptr %out.elt4.ptr, align 321001  %out.elt5.ptr = getelementptr i64, ptr %out.vec.ptr, i64 51002  store i64 %in.elt, ptr %out.elt5.ptr, align 81003  ret void1004}1005 1006define void @vec384_double(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1007; ALL-LABEL: vec384_double:1008; ALL:       # %bb.0:1009; ALL-NEXT:    movq (%rdi), %rax1010; ALL-NEXT:    notq %rax1011; ALL-NEXT:    movq %rax, (%rsi)1012; ALL-NEXT:    movq %rax, 8(%rsi)1013; ALL-NEXT:    movq %rax, 16(%rsi)1014; ALL-NEXT:    movq %rax, 24(%rsi)1015; ALL-NEXT:    movq %rax, 32(%rsi)1016; ALL-NEXT:    movq %rax, 40(%rsi)1017; ALL-NEXT:    retq1018  %in.elt.not = load i64, ptr %in.elt.ptr, align 641019  %in.elt.int = xor i64 %in.elt.not, -11020  %in.elt = bitcast i64 %in.elt.int to double1021  %out.elt0.ptr = getelementptr double, ptr %out.vec.ptr, i64 01022  store double %in.elt, ptr %out.elt0.ptr, align 641023  %out.elt1.ptr = getelementptr double, ptr %out.vec.ptr, i64 11024  store double %in.elt, ptr %out.elt1.ptr, align 81025  %out.elt2.ptr = getelementptr double, ptr %out.vec.ptr, i64 21026  store double %in.elt, ptr %out.elt2.ptr, align 161027  %out.elt3.ptr = getelementptr double, ptr %out.vec.ptr, i64 31028  store double %in.elt, ptr %out.elt3.ptr, align 81029  %out.elt4.ptr = getelementptr double, ptr %out.vec.ptr, i64 41030  store double %in.elt, ptr %out.elt4.ptr, align 321031  %out.elt5.ptr = getelementptr double, ptr %out.vec.ptr, i64 51032  store double %in.elt, ptr %out.elt5.ptr, align 81033  ret void1034}1035 1036define void @vec384_i128(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1037; ALL-LABEL: vec384_i128:1038; ALL:       # %bb.0:1039; ALL-NEXT:    movq (%rdi), %rax1040; ALL-NEXT:    movq 8(%rdi), %rcx1041; ALL-NEXT:    notq %rcx1042; ALL-NEXT:    notq %rax1043; ALL-NEXT:    movq %rax, (%rsi)1044; ALL-NEXT:    movq %rcx, 8(%rsi)1045; ALL-NEXT:    movq %rcx, 24(%rsi)1046; ALL-NEXT:    movq %rax, 16(%rsi)1047; ALL-NEXT:    movq %rcx, 40(%rsi)1048; ALL-NEXT:    movq %rax, 32(%rsi)1049; ALL-NEXT:    retq1050  %in.elt.not = load i128, ptr %in.elt.ptr, align 641051  %in.elt = xor i128 %in.elt.not, -11052  %out.elt0.ptr = getelementptr i128, ptr %out.vec.ptr, i64 01053  store i128 %in.elt, ptr %out.elt0.ptr, align 641054  %out.elt1.ptr = getelementptr i128, ptr %out.vec.ptr, i64 11055  store i128 %in.elt, ptr %out.elt1.ptr, align 161056  %out.elt2.ptr = getelementptr i128, ptr %out.vec.ptr, i64 21057  store i128 %in.elt, ptr %out.elt2.ptr, align 321058  ret void1059}1060 1061define void @vec512_i8(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1062; ALL-LABEL: vec512_i8:1063; ALL:       # %bb.0:1064; ALL-NEXT:    movzbl (%rdi), %eax1065; ALL-NEXT:    notb %al1066; ALL-NEXT:    movb %al, (%rsi)1067; ALL-NEXT:    movb %al, 1(%rsi)1068; ALL-NEXT:    movb %al, 2(%rsi)1069; ALL-NEXT:    movb %al, 3(%rsi)1070; ALL-NEXT:    movb %al, 4(%rsi)1071; ALL-NEXT:    movb %al, 5(%rsi)1072; ALL-NEXT:    movb %al, 6(%rsi)1073; ALL-NEXT:    movb %al, 7(%rsi)1074; ALL-NEXT:    movb %al, 8(%rsi)1075; ALL-NEXT:    movb %al, 9(%rsi)1076; ALL-NEXT:    movb %al, 10(%rsi)1077; ALL-NEXT:    movb %al, 11(%rsi)1078; ALL-NEXT:    movb %al, 12(%rsi)1079; ALL-NEXT:    movb %al, 13(%rsi)1080; ALL-NEXT:    movb %al, 14(%rsi)1081; ALL-NEXT:    movb %al, 15(%rsi)1082; ALL-NEXT:    movb %al, 16(%rsi)1083; ALL-NEXT:    movb %al, 17(%rsi)1084; ALL-NEXT:    movb %al, 18(%rsi)1085; ALL-NEXT:    movb %al, 19(%rsi)1086; ALL-NEXT:    movb %al, 20(%rsi)1087; ALL-NEXT:    movb %al, 21(%rsi)1088; ALL-NEXT:    movb %al, 22(%rsi)1089; ALL-NEXT:    movb %al, 23(%rsi)1090; ALL-NEXT:    movb %al, 24(%rsi)1091; ALL-NEXT:    movb %al, 25(%rsi)1092; ALL-NEXT:    movb %al, 26(%rsi)1093; ALL-NEXT:    movb %al, 27(%rsi)1094; ALL-NEXT:    movb %al, 28(%rsi)1095; ALL-NEXT:    movb %al, 29(%rsi)1096; ALL-NEXT:    movb %al, 30(%rsi)1097; ALL-NEXT:    movb %al, 31(%rsi)1098; ALL-NEXT:    movb %al, 32(%rsi)1099; ALL-NEXT:    movb %al, 33(%rsi)1100; ALL-NEXT:    movb %al, 34(%rsi)1101; ALL-NEXT:    movb %al, 35(%rsi)1102; ALL-NEXT:    movb %al, 36(%rsi)1103; ALL-NEXT:    movb %al, 37(%rsi)1104; ALL-NEXT:    movb %al, 38(%rsi)1105; ALL-NEXT:    movb %al, 39(%rsi)1106; ALL-NEXT:    movb %al, 40(%rsi)1107; ALL-NEXT:    movb %al, 41(%rsi)1108; ALL-NEXT:    movb %al, 42(%rsi)1109; ALL-NEXT:    movb %al, 43(%rsi)1110; ALL-NEXT:    movb %al, 44(%rsi)1111; ALL-NEXT:    movb %al, 45(%rsi)1112; ALL-NEXT:    movb %al, 46(%rsi)1113; ALL-NEXT:    movb %al, 47(%rsi)1114; ALL-NEXT:    movb %al, 48(%rsi)1115; ALL-NEXT:    movb %al, 49(%rsi)1116; ALL-NEXT:    movb %al, 50(%rsi)1117; ALL-NEXT:    movb %al, 51(%rsi)1118; ALL-NEXT:    movb %al, 52(%rsi)1119; ALL-NEXT:    movb %al, 53(%rsi)1120; ALL-NEXT:    movb %al, 54(%rsi)1121; ALL-NEXT:    movb %al, 55(%rsi)1122; ALL-NEXT:    movb %al, 56(%rsi)1123; ALL-NEXT:    movb %al, 57(%rsi)1124; ALL-NEXT:    movb %al, 58(%rsi)1125; ALL-NEXT:    movb %al, 59(%rsi)1126; ALL-NEXT:    movb %al, 60(%rsi)1127; ALL-NEXT:    movb %al, 61(%rsi)1128; ALL-NEXT:    movb %al, 62(%rsi)1129; ALL-NEXT:    movb %al, 63(%rsi)1130; ALL-NEXT:    retq1131  %in.elt.not = load i8, ptr %in.elt.ptr, align 641132  %in.elt = xor i8 %in.elt.not, -11133  %out.elt0.ptr = getelementptr i8, ptr %out.vec.ptr, i64 01134  store i8 %in.elt, ptr %out.elt0.ptr, align 641135  %out.elt1.ptr = getelementptr i8, ptr %out.vec.ptr, i64 11136  store i8 %in.elt, ptr %out.elt1.ptr, align 11137  %out.elt2.ptr = getelementptr i8, ptr %out.vec.ptr, i64 21138  store i8 %in.elt, ptr %out.elt2.ptr, align 21139  %out.elt3.ptr = getelementptr i8, ptr %out.vec.ptr, i64 31140  store i8 %in.elt, ptr %out.elt3.ptr, align 11141  %out.elt4.ptr = getelementptr i8, ptr %out.vec.ptr, i64 41142  store i8 %in.elt, ptr %out.elt4.ptr, align 41143  %out.elt5.ptr = getelementptr i8, ptr %out.vec.ptr, i64 51144  store i8 %in.elt, ptr %out.elt5.ptr, align 11145  %out.elt6.ptr = getelementptr i8, ptr %out.vec.ptr, i64 61146  store i8 %in.elt, ptr %out.elt6.ptr, align 21147  %out.elt7.ptr = getelementptr i8, ptr %out.vec.ptr, i64 71148  store i8 %in.elt, ptr %out.elt7.ptr, align 11149  %out.elt8.ptr = getelementptr i8, ptr %out.vec.ptr, i64 81150  store i8 %in.elt, ptr %out.elt8.ptr, align 81151  %out.elt9.ptr = getelementptr i8, ptr %out.vec.ptr, i64 91152  store i8 %in.elt, ptr %out.elt9.ptr, align 11153  %out.elt10.ptr = getelementptr i8, ptr %out.vec.ptr, i64 101154  store i8 %in.elt, ptr %out.elt10.ptr, align 21155  %out.elt11.ptr = getelementptr i8, ptr %out.vec.ptr, i64 111156  store i8 %in.elt, ptr %out.elt11.ptr, align 11157  %out.elt12.ptr = getelementptr i8, ptr %out.vec.ptr, i64 121158  store i8 %in.elt, ptr %out.elt12.ptr, align 41159  %out.elt13.ptr = getelementptr i8, ptr %out.vec.ptr, i64 131160  store i8 %in.elt, ptr %out.elt13.ptr, align 11161  %out.elt14.ptr = getelementptr i8, ptr %out.vec.ptr, i64 141162  store i8 %in.elt, ptr %out.elt14.ptr, align 21163  %out.elt15.ptr = getelementptr i8, ptr %out.vec.ptr, i64 151164  store i8 %in.elt, ptr %out.elt15.ptr, align 11165  %out.elt16.ptr = getelementptr i8, ptr %out.vec.ptr, i64 161166  store i8 %in.elt, ptr %out.elt16.ptr, align 161167  %out.elt17.ptr = getelementptr i8, ptr %out.vec.ptr, i64 171168  store i8 %in.elt, ptr %out.elt17.ptr, align 11169  %out.elt18.ptr = getelementptr i8, ptr %out.vec.ptr, i64 181170  store i8 %in.elt, ptr %out.elt18.ptr, align 21171  %out.elt19.ptr = getelementptr i8, ptr %out.vec.ptr, i64 191172  store i8 %in.elt, ptr %out.elt19.ptr, align 11173  %out.elt20.ptr = getelementptr i8, ptr %out.vec.ptr, i64 201174  store i8 %in.elt, ptr %out.elt20.ptr, align 41175  %out.elt21.ptr = getelementptr i8, ptr %out.vec.ptr, i64 211176  store i8 %in.elt, ptr %out.elt21.ptr, align 11177  %out.elt22.ptr = getelementptr i8, ptr %out.vec.ptr, i64 221178  store i8 %in.elt, ptr %out.elt22.ptr, align 21179  %out.elt23.ptr = getelementptr i8, ptr %out.vec.ptr, i64 231180  store i8 %in.elt, ptr %out.elt23.ptr, align 11181  %out.elt24.ptr = getelementptr i8, ptr %out.vec.ptr, i64 241182  store i8 %in.elt, ptr %out.elt24.ptr, align 81183  %out.elt25.ptr = getelementptr i8, ptr %out.vec.ptr, i64 251184  store i8 %in.elt, ptr %out.elt25.ptr, align 11185  %out.elt26.ptr = getelementptr i8, ptr %out.vec.ptr, i64 261186  store i8 %in.elt, ptr %out.elt26.ptr, align 21187  %out.elt27.ptr = getelementptr i8, ptr %out.vec.ptr, i64 271188  store i8 %in.elt, ptr %out.elt27.ptr, align 11189  %out.elt28.ptr = getelementptr i8, ptr %out.vec.ptr, i64 281190  store i8 %in.elt, ptr %out.elt28.ptr, align 41191  %out.elt29.ptr = getelementptr i8, ptr %out.vec.ptr, i64 291192  store i8 %in.elt, ptr %out.elt29.ptr, align 11193  %out.elt30.ptr = getelementptr i8, ptr %out.vec.ptr, i64 301194  store i8 %in.elt, ptr %out.elt30.ptr, align 21195  %out.elt31.ptr = getelementptr i8, ptr %out.vec.ptr, i64 311196  store i8 %in.elt, ptr %out.elt31.ptr, align 11197  %out.elt32.ptr = getelementptr i8, ptr %out.vec.ptr, i64 321198  store i8 %in.elt, ptr %out.elt32.ptr, align 321199  %out.elt33.ptr = getelementptr i8, ptr %out.vec.ptr, i64 331200  store i8 %in.elt, ptr %out.elt33.ptr, align 11201  %out.elt34.ptr = getelementptr i8, ptr %out.vec.ptr, i64 341202  store i8 %in.elt, ptr %out.elt34.ptr, align 21203  %out.elt35.ptr = getelementptr i8, ptr %out.vec.ptr, i64 351204  store i8 %in.elt, ptr %out.elt35.ptr, align 11205  %out.elt36.ptr = getelementptr i8, ptr %out.vec.ptr, i64 361206  store i8 %in.elt, ptr %out.elt36.ptr, align 41207  %out.elt37.ptr = getelementptr i8, ptr %out.vec.ptr, i64 371208  store i8 %in.elt, ptr %out.elt37.ptr, align 11209  %out.elt38.ptr = getelementptr i8, ptr %out.vec.ptr, i64 381210  store i8 %in.elt, ptr %out.elt38.ptr, align 21211  %out.elt39.ptr = getelementptr i8, ptr %out.vec.ptr, i64 391212  store i8 %in.elt, ptr %out.elt39.ptr, align 11213  %out.elt40.ptr = getelementptr i8, ptr %out.vec.ptr, i64 401214  store i8 %in.elt, ptr %out.elt40.ptr, align 81215  %out.elt41.ptr = getelementptr i8, ptr %out.vec.ptr, i64 411216  store i8 %in.elt, ptr %out.elt41.ptr, align 11217  %out.elt42.ptr = getelementptr i8, ptr %out.vec.ptr, i64 421218  store i8 %in.elt, ptr %out.elt42.ptr, align 21219  %out.elt43.ptr = getelementptr i8, ptr %out.vec.ptr, i64 431220  store i8 %in.elt, ptr %out.elt43.ptr, align 11221  %out.elt44.ptr = getelementptr i8, ptr %out.vec.ptr, i64 441222  store i8 %in.elt, ptr %out.elt44.ptr, align 41223  %out.elt45.ptr = getelementptr i8, ptr %out.vec.ptr, i64 451224  store i8 %in.elt, ptr %out.elt45.ptr, align 11225  %out.elt46.ptr = getelementptr i8, ptr %out.vec.ptr, i64 461226  store i8 %in.elt, ptr %out.elt46.ptr, align 21227  %out.elt47.ptr = getelementptr i8, ptr %out.vec.ptr, i64 471228  store i8 %in.elt, ptr %out.elt47.ptr, align 11229  %out.elt48.ptr = getelementptr i8, ptr %out.vec.ptr, i64 481230  store i8 %in.elt, ptr %out.elt48.ptr, align 161231  %out.elt49.ptr = getelementptr i8, ptr %out.vec.ptr, i64 491232  store i8 %in.elt, ptr %out.elt49.ptr, align 11233  %out.elt50.ptr = getelementptr i8, ptr %out.vec.ptr, i64 501234  store i8 %in.elt, ptr %out.elt50.ptr, align 21235  %out.elt51.ptr = getelementptr i8, ptr %out.vec.ptr, i64 511236  store i8 %in.elt, ptr %out.elt51.ptr, align 11237  %out.elt52.ptr = getelementptr i8, ptr %out.vec.ptr, i64 521238  store i8 %in.elt, ptr %out.elt52.ptr, align 41239  %out.elt53.ptr = getelementptr i8, ptr %out.vec.ptr, i64 531240  store i8 %in.elt, ptr %out.elt53.ptr, align 11241  %out.elt54.ptr = getelementptr i8, ptr %out.vec.ptr, i64 541242  store i8 %in.elt, ptr %out.elt54.ptr, align 21243  %out.elt55.ptr = getelementptr i8, ptr %out.vec.ptr, i64 551244  store i8 %in.elt, ptr %out.elt55.ptr, align 11245  %out.elt56.ptr = getelementptr i8, ptr %out.vec.ptr, i64 561246  store i8 %in.elt, ptr %out.elt56.ptr, align 81247  %out.elt57.ptr = getelementptr i8, ptr %out.vec.ptr, i64 571248  store i8 %in.elt, ptr %out.elt57.ptr, align 11249  %out.elt58.ptr = getelementptr i8, ptr %out.vec.ptr, i64 581250  store i8 %in.elt, ptr %out.elt58.ptr, align 21251  %out.elt59.ptr = getelementptr i8, ptr %out.vec.ptr, i64 591252  store i8 %in.elt, ptr %out.elt59.ptr, align 11253  %out.elt60.ptr = getelementptr i8, ptr %out.vec.ptr, i64 601254  store i8 %in.elt, ptr %out.elt60.ptr, align 41255  %out.elt61.ptr = getelementptr i8, ptr %out.vec.ptr, i64 611256  store i8 %in.elt, ptr %out.elt61.ptr, align 11257  %out.elt62.ptr = getelementptr i8, ptr %out.vec.ptr, i64 621258  store i8 %in.elt, ptr %out.elt62.ptr, align 21259  %out.elt63.ptr = getelementptr i8, ptr %out.vec.ptr, i64 631260  store i8 %in.elt, ptr %out.elt63.ptr, align 11261  ret void1262}1263 1264define void @vec512_i16(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1265; ALL-LABEL: vec512_i16:1266; ALL:       # %bb.0:1267; ALL-NEXT:    movl (%rdi), %eax1268; ALL-NEXT:    notl %eax1269; ALL-NEXT:    movw %ax, (%rsi)1270; ALL-NEXT:    movw %ax, 2(%rsi)1271; ALL-NEXT:    movw %ax, 4(%rsi)1272; ALL-NEXT:    movw %ax, 6(%rsi)1273; ALL-NEXT:    movw %ax, 8(%rsi)1274; ALL-NEXT:    movw %ax, 10(%rsi)1275; ALL-NEXT:    movw %ax, 12(%rsi)1276; ALL-NEXT:    movw %ax, 14(%rsi)1277; ALL-NEXT:    movw %ax, 16(%rsi)1278; ALL-NEXT:    movw %ax, 18(%rsi)1279; ALL-NEXT:    movw %ax, 20(%rsi)1280; ALL-NEXT:    movw %ax, 22(%rsi)1281; ALL-NEXT:    movw %ax, 24(%rsi)1282; ALL-NEXT:    movw %ax, 26(%rsi)1283; ALL-NEXT:    movw %ax, 28(%rsi)1284; ALL-NEXT:    movw %ax, 30(%rsi)1285; ALL-NEXT:    movw %ax, 32(%rsi)1286; ALL-NEXT:    movw %ax, 34(%rsi)1287; ALL-NEXT:    movw %ax, 36(%rsi)1288; ALL-NEXT:    movw %ax, 38(%rsi)1289; ALL-NEXT:    movw %ax, 40(%rsi)1290; ALL-NEXT:    movw %ax, 42(%rsi)1291; ALL-NEXT:    movw %ax, 44(%rsi)1292; ALL-NEXT:    movw %ax, 46(%rsi)1293; ALL-NEXT:    movw %ax, 48(%rsi)1294; ALL-NEXT:    movw %ax, 50(%rsi)1295; ALL-NEXT:    movw %ax, 52(%rsi)1296; ALL-NEXT:    movw %ax, 54(%rsi)1297; ALL-NEXT:    movw %ax, 56(%rsi)1298; ALL-NEXT:    movw %ax, 58(%rsi)1299; ALL-NEXT:    movw %ax, 60(%rsi)1300; ALL-NEXT:    movw %ax, 62(%rsi)1301; ALL-NEXT:    retq1302  %in.elt.not = load i16, ptr %in.elt.ptr, align 641303  %in.elt = xor i16 %in.elt.not, -11304  %out.elt0.ptr = getelementptr i16, ptr %out.vec.ptr, i64 01305  store i16 %in.elt, ptr %out.elt0.ptr, align 641306  %out.elt1.ptr = getelementptr i16, ptr %out.vec.ptr, i64 11307  store i16 %in.elt, ptr %out.elt1.ptr, align 21308  %out.elt2.ptr = getelementptr i16, ptr %out.vec.ptr, i64 21309  store i16 %in.elt, ptr %out.elt2.ptr, align 41310  %out.elt3.ptr = getelementptr i16, ptr %out.vec.ptr, i64 31311  store i16 %in.elt, ptr %out.elt3.ptr, align 21312  %out.elt4.ptr = getelementptr i16, ptr %out.vec.ptr, i64 41313  store i16 %in.elt, ptr %out.elt4.ptr, align 81314  %out.elt5.ptr = getelementptr i16, ptr %out.vec.ptr, i64 51315  store i16 %in.elt, ptr %out.elt5.ptr, align 21316  %out.elt6.ptr = getelementptr i16, ptr %out.vec.ptr, i64 61317  store i16 %in.elt, ptr %out.elt6.ptr, align 41318  %out.elt7.ptr = getelementptr i16, ptr %out.vec.ptr, i64 71319  store i16 %in.elt, ptr %out.elt7.ptr, align 21320  %out.elt8.ptr = getelementptr i16, ptr %out.vec.ptr, i64 81321  store i16 %in.elt, ptr %out.elt8.ptr, align 161322  %out.elt9.ptr = getelementptr i16, ptr %out.vec.ptr, i64 91323  store i16 %in.elt, ptr %out.elt9.ptr, align 21324  %out.elt10.ptr = getelementptr i16, ptr %out.vec.ptr, i64 101325  store i16 %in.elt, ptr %out.elt10.ptr, align 41326  %out.elt11.ptr = getelementptr i16, ptr %out.vec.ptr, i64 111327  store i16 %in.elt, ptr %out.elt11.ptr, align 21328  %out.elt12.ptr = getelementptr i16, ptr %out.vec.ptr, i64 121329  store i16 %in.elt, ptr %out.elt12.ptr, align 81330  %out.elt13.ptr = getelementptr i16, ptr %out.vec.ptr, i64 131331  store i16 %in.elt, ptr %out.elt13.ptr, align 21332  %out.elt14.ptr = getelementptr i16, ptr %out.vec.ptr, i64 141333  store i16 %in.elt, ptr %out.elt14.ptr, align 41334  %out.elt15.ptr = getelementptr i16, ptr %out.vec.ptr, i64 151335  store i16 %in.elt, ptr %out.elt15.ptr, align 21336  %out.elt16.ptr = getelementptr i16, ptr %out.vec.ptr, i64 161337  store i16 %in.elt, ptr %out.elt16.ptr, align 321338  %out.elt17.ptr = getelementptr i16, ptr %out.vec.ptr, i64 171339  store i16 %in.elt, ptr %out.elt17.ptr, align 21340  %out.elt18.ptr = getelementptr i16, ptr %out.vec.ptr, i64 181341  store i16 %in.elt, ptr %out.elt18.ptr, align 41342  %out.elt19.ptr = getelementptr i16, ptr %out.vec.ptr, i64 191343  store i16 %in.elt, ptr %out.elt19.ptr, align 21344  %out.elt20.ptr = getelementptr i16, ptr %out.vec.ptr, i64 201345  store i16 %in.elt, ptr %out.elt20.ptr, align 81346  %out.elt21.ptr = getelementptr i16, ptr %out.vec.ptr, i64 211347  store i16 %in.elt, ptr %out.elt21.ptr, align 21348  %out.elt22.ptr = getelementptr i16, ptr %out.vec.ptr, i64 221349  store i16 %in.elt, ptr %out.elt22.ptr, align 41350  %out.elt23.ptr = getelementptr i16, ptr %out.vec.ptr, i64 231351  store i16 %in.elt, ptr %out.elt23.ptr, align 21352  %out.elt24.ptr = getelementptr i16, ptr %out.vec.ptr, i64 241353  store i16 %in.elt, ptr %out.elt24.ptr, align 161354  %out.elt25.ptr = getelementptr i16, ptr %out.vec.ptr, i64 251355  store i16 %in.elt, ptr %out.elt25.ptr, align 21356  %out.elt26.ptr = getelementptr i16, ptr %out.vec.ptr, i64 261357  store i16 %in.elt, ptr %out.elt26.ptr, align 41358  %out.elt27.ptr = getelementptr i16, ptr %out.vec.ptr, i64 271359  store i16 %in.elt, ptr %out.elt27.ptr, align 21360  %out.elt28.ptr = getelementptr i16, ptr %out.vec.ptr, i64 281361  store i16 %in.elt, ptr %out.elt28.ptr, align 81362  %out.elt29.ptr = getelementptr i16, ptr %out.vec.ptr, i64 291363  store i16 %in.elt, ptr %out.elt29.ptr, align 21364  %out.elt30.ptr = getelementptr i16, ptr %out.vec.ptr, i64 301365  store i16 %in.elt, ptr %out.elt30.ptr, align 41366  %out.elt31.ptr = getelementptr i16, ptr %out.vec.ptr, i64 311367  store i16 %in.elt, ptr %out.elt31.ptr, align 21368  ret void1369}1370 1371define void @vec512_i32(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1372; ALL-LABEL: vec512_i32:1373; ALL:       # %bb.0:1374; ALL-NEXT:    movl (%rdi), %eax1375; ALL-NEXT:    notl %eax1376; ALL-NEXT:    movl %eax, (%rsi)1377; ALL-NEXT:    movl %eax, 4(%rsi)1378; ALL-NEXT:    movl %eax, 8(%rsi)1379; ALL-NEXT:    movl %eax, 12(%rsi)1380; ALL-NEXT:    movl %eax, 16(%rsi)1381; ALL-NEXT:    movl %eax, 20(%rsi)1382; ALL-NEXT:    movl %eax, 24(%rsi)1383; ALL-NEXT:    movl %eax, 28(%rsi)1384; ALL-NEXT:    movl %eax, 32(%rsi)1385; ALL-NEXT:    movl %eax, 36(%rsi)1386; ALL-NEXT:    movl %eax, 40(%rsi)1387; ALL-NEXT:    movl %eax, 44(%rsi)1388; ALL-NEXT:    movl %eax, 48(%rsi)1389; ALL-NEXT:    movl %eax, 52(%rsi)1390; ALL-NEXT:    movl %eax, 56(%rsi)1391; ALL-NEXT:    movl %eax, 60(%rsi)1392; ALL-NEXT:    retq1393  %in.elt.not = load i32, ptr %in.elt.ptr, align 641394  %in.elt = xor i32 %in.elt.not, -11395  %out.elt0.ptr = getelementptr i32, ptr %out.vec.ptr, i64 01396  store i32 %in.elt, ptr %out.elt0.ptr, align 641397  %out.elt1.ptr = getelementptr i32, ptr %out.vec.ptr, i64 11398  store i32 %in.elt, ptr %out.elt1.ptr, align 41399  %out.elt2.ptr = getelementptr i32, ptr %out.vec.ptr, i64 21400  store i32 %in.elt, ptr %out.elt2.ptr, align 81401  %out.elt3.ptr = getelementptr i32, ptr %out.vec.ptr, i64 31402  store i32 %in.elt, ptr %out.elt3.ptr, align 41403  %out.elt4.ptr = getelementptr i32, ptr %out.vec.ptr, i64 41404  store i32 %in.elt, ptr %out.elt4.ptr, align 161405  %out.elt5.ptr = getelementptr i32, ptr %out.vec.ptr, i64 51406  store i32 %in.elt, ptr %out.elt5.ptr, align 41407  %out.elt6.ptr = getelementptr i32, ptr %out.vec.ptr, i64 61408  store i32 %in.elt, ptr %out.elt6.ptr, align 81409  %out.elt7.ptr = getelementptr i32, ptr %out.vec.ptr, i64 71410  store i32 %in.elt, ptr %out.elt7.ptr, align 41411  %out.elt8.ptr = getelementptr i32, ptr %out.vec.ptr, i64 81412  store i32 %in.elt, ptr %out.elt8.ptr, align 321413  %out.elt9.ptr = getelementptr i32, ptr %out.vec.ptr, i64 91414  store i32 %in.elt, ptr %out.elt9.ptr, align 41415  %out.elt10.ptr = getelementptr i32, ptr %out.vec.ptr, i64 101416  store i32 %in.elt, ptr %out.elt10.ptr, align 81417  %out.elt11.ptr = getelementptr i32, ptr %out.vec.ptr, i64 111418  store i32 %in.elt, ptr %out.elt11.ptr, align 41419  %out.elt12.ptr = getelementptr i32, ptr %out.vec.ptr, i64 121420  store i32 %in.elt, ptr %out.elt12.ptr, align 161421  %out.elt13.ptr = getelementptr i32, ptr %out.vec.ptr, i64 131422  store i32 %in.elt, ptr %out.elt13.ptr, align 41423  %out.elt14.ptr = getelementptr i32, ptr %out.vec.ptr, i64 141424  store i32 %in.elt, ptr %out.elt14.ptr, align 81425  %out.elt15.ptr = getelementptr i32, ptr %out.vec.ptr, i64 151426  store i32 %in.elt, ptr %out.elt15.ptr, align 41427  ret void1428}1429 1430define void @vec512_float(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1431; ALL-LABEL: vec512_float:1432; ALL:       # %bb.0:1433; ALL-NEXT:    movl (%rdi), %eax1434; ALL-NEXT:    notl %eax1435; ALL-NEXT:    movl %eax, (%rsi)1436; ALL-NEXT:    movl %eax, 4(%rsi)1437; ALL-NEXT:    movl %eax, 8(%rsi)1438; ALL-NEXT:    movl %eax, 12(%rsi)1439; ALL-NEXT:    movl %eax, 16(%rsi)1440; ALL-NEXT:    movl %eax, 20(%rsi)1441; ALL-NEXT:    movl %eax, 24(%rsi)1442; ALL-NEXT:    movl %eax, 28(%rsi)1443; ALL-NEXT:    movl %eax, 32(%rsi)1444; ALL-NEXT:    movl %eax, 36(%rsi)1445; ALL-NEXT:    movl %eax, 40(%rsi)1446; ALL-NEXT:    movl %eax, 44(%rsi)1447; ALL-NEXT:    movl %eax, 48(%rsi)1448; ALL-NEXT:    movl %eax, 52(%rsi)1449; ALL-NEXT:    movl %eax, 56(%rsi)1450; ALL-NEXT:    movl %eax, 60(%rsi)1451; ALL-NEXT:    retq1452  %in.elt.not = load i32, ptr %in.elt.ptr, align 641453  %in.elt.int = xor i32 %in.elt.not, -11454  %in.elt = bitcast i32 %in.elt.int to float1455  %out.elt0.ptr = getelementptr float, ptr %out.vec.ptr, i64 01456  store float %in.elt, ptr %out.elt0.ptr, align 641457  %out.elt1.ptr = getelementptr float, ptr %out.vec.ptr, i64 11458  store float %in.elt, ptr %out.elt1.ptr, align 41459  %out.elt2.ptr = getelementptr float, ptr %out.vec.ptr, i64 21460  store float %in.elt, ptr %out.elt2.ptr, align 81461  %out.elt3.ptr = getelementptr float, ptr %out.vec.ptr, i64 31462  store float %in.elt, ptr %out.elt3.ptr, align 41463  %out.elt4.ptr = getelementptr float, ptr %out.vec.ptr, i64 41464  store float %in.elt, ptr %out.elt4.ptr, align 161465  %out.elt5.ptr = getelementptr float, ptr %out.vec.ptr, i64 51466  store float %in.elt, ptr %out.elt5.ptr, align 41467  %out.elt6.ptr = getelementptr float, ptr %out.vec.ptr, i64 61468  store float %in.elt, ptr %out.elt6.ptr, align 81469  %out.elt7.ptr = getelementptr float, ptr %out.vec.ptr, i64 71470  store float %in.elt, ptr %out.elt7.ptr, align 41471  %out.elt8.ptr = getelementptr float, ptr %out.vec.ptr, i64 81472  store float %in.elt, ptr %out.elt8.ptr, align 321473  %out.elt9.ptr = getelementptr float, ptr %out.vec.ptr, i64 91474  store float %in.elt, ptr %out.elt9.ptr, align 41475  %out.elt10.ptr = getelementptr float, ptr %out.vec.ptr, i64 101476  store float %in.elt, ptr %out.elt10.ptr, align 81477  %out.elt11.ptr = getelementptr float, ptr %out.vec.ptr, i64 111478  store float %in.elt, ptr %out.elt11.ptr, align 41479  %out.elt12.ptr = getelementptr float, ptr %out.vec.ptr, i64 121480  store float %in.elt, ptr %out.elt12.ptr, align 161481  %out.elt13.ptr = getelementptr float, ptr %out.vec.ptr, i64 131482  store float %in.elt, ptr %out.elt13.ptr, align 41483  %out.elt14.ptr = getelementptr float, ptr %out.vec.ptr, i64 141484  store float %in.elt, ptr %out.elt14.ptr, align 81485  %out.elt15.ptr = getelementptr float, ptr %out.vec.ptr, i64 151486  store float %in.elt, ptr %out.elt15.ptr, align 41487  ret void1488}1489 1490define void @vec512_i64(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1491; ALL-LABEL: vec512_i64:1492; ALL:       # %bb.0:1493; ALL-NEXT:    movq (%rdi), %rax1494; ALL-NEXT:    notq %rax1495; ALL-NEXT:    movq %rax, (%rsi)1496; ALL-NEXT:    movq %rax, 8(%rsi)1497; ALL-NEXT:    movq %rax, 16(%rsi)1498; ALL-NEXT:    movq %rax, 24(%rsi)1499; ALL-NEXT:    movq %rax, 32(%rsi)1500; ALL-NEXT:    movq %rax, 40(%rsi)1501; ALL-NEXT:    movq %rax, 48(%rsi)1502; ALL-NEXT:    movq %rax, 56(%rsi)1503; ALL-NEXT:    retq1504  %in.elt.not = load i64, ptr %in.elt.ptr, align 641505  %in.elt = xor i64 %in.elt.not, -11506  %out.elt0.ptr = getelementptr i64, ptr %out.vec.ptr, i64 01507  store i64 %in.elt, ptr %out.elt0.ptr, align 641508  %out.elt1.ptr = getelementptr i64, ptr %out.vec.ptr, i64 11509  store i64 %in.elt, ptr %out.elt1.ptr, align 81510  %out.elt2.ptr = getelementptr i64, ptr %out.vec.ptr, i64 21511  store i64 %in.elt, ptr %out.elt2.ptr, align 161512  %out.elt3.ptr = getelementptr i64, ptr %out.vec.ptr, i64 31513  store i64 %in.elt, ptr %out.elt3.ptr, align 81514  %out.elt4.ptr = getelementptr i64, ptr %out.vec.ptr, i64 41515  store i64 %in.elt, ptr %out.elt4.ptr, align 321516  %out.elt5.ptr = getelementptr i64, ptr %out.vec.ptr, i64 51517  store i64 %in.elt, ptr %out.elt5.ptr, align 81518  %out.elt6.ptr = getelementptr i64, ptr %out.vec.ptr, i64 61519  store i64 %in.elt, ptr %out.elt6.ptr, align 161520  %out.elt7.ptr = getelementptr i64, ptr %out.vec.ptr, i64 71521  store i64 %in.elt, ptr %out.elt7.ptr, align 81522  ret void1523}1524 1525define void @vec512_double(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1526; ALL-LABEL: vec512_double:1527; ALL:       # %bb.0:1528; ALL-NEXT:    movq (%rdi), %rax1529; ALL-NEXT:    notq %rax1530; ALL-NEXT:    movq %rax, (%rsi)1531; ALL-NEXT:    movq %rax, 8(%rsi)1532; ALL-NEXT:    movq %rax, 16(%rsi)1533; ALL-NEXT:    movq %rax, 24(%rsi)1534; ALL-NEXT:    movq %rax, 32(%rsi)1535; ALL-NEXT:    movq %rax, 40(%rsi)1536; ALL-NEXT:    movq %rax, 48(%rsi)1537; ALL-NEXT:    movq %rax, 56(%rsi)1538; ALL-NEXT:    retq1539  %in.elt.not = load i64, ptr %in.elt.ptr, align 641540  %in.elt.int = xor i64 %in.elt.not, -11541  %in.elt = bitcast i64 %in.elt.int to double1542  %out.elt0.ptr = getelementptr double, ptr %out.vec.ptr, i64 01543  store double %in.elt, ptr %out.elt0.ptr, align 641544  %out.elt1.ptr = getelementptr double, ptr %out.vec.ptr, i64 11545  store double %in.elt, ptr %out.elt1.ptr, align 81546  %out.elt2.ptr = getelementptr double, ptr %out.vec.ptr, i64 21547  store double %in.elt, ptr %out.elt2.ptr, align 161548  %out.elt3.ptr = getelementptr double, ptr %out.vec.ptr, i64 31549  store double %in.elt, ptr %out.elt3.ptr, align 81550  %out.elt4.ptr = getelementptr double, ptr %out.vec.ptr, i64 41551  store double %in.elt, ptr %out.elt4.ptr, align 321552  %out.elt5.ptr = getelementptr double, ptr %out.vec.ptr, i64 51553  store double %in.elt, ptr %out.elt5.ptr, align 81554  %out.elt6.ptr = getelementptr double, ptr %out.vec.ptr, i64 61555  store double %in.elt, ptr %out.elt6.ptr, align 161556  %out.elt7.ptr = getelementptr double, ptr %out.vec.ptr, i64 71557  store double %in.elt, ptr %out.elt7.ptr, align 81558  ret void1559}1560 1561define void @vec512_i128(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1562; ALL-LABEL: vec512_i128:1563; ALL:       # %bb.0:1564; ALL-NEXT:    movq (%rdi), %rax1565; ALL-NEXT:    movq 8(%rdi), %rcx1566; ALL-NEXT:    notq %rcx1567; ALL-NEXT:    notq %rax1568; ALL-NEXT:    movq %rax, (%rsi)1569; ALL-NEXT:    movq %rcx, 8(%rsi)1570; ALL-NEXT:    movq %rcx, 24(%rsi)1571; ALL-NEXT:    movq %rax, 16(%rsi)1572; ALL-NEXT:    movq %rcx, 40(%rsi)1573; ALL-NEXT:    movq %rax, 32(%rsi)1574; ALL-NEXT:    movq %rcx, 56(%rsi)1575; ALL-NEXT:    movq %rax, 48(%rsi)1576; ALL-NEXT:    retq1577  %in.elt.not = load i128, ptr %in.elt.ptr, align 641578  %in.elt = xor i128 %in.elt.not, -11579  %out.elt0.ptr = getelementptr i128, ptr %out.vec.ptr, i64 01580  store i128 %in.elt, ptr %out.elt0.ptr, align 641581  %out.elt1.ptr = getelementptr i128, ptr %out.vec.ptr, i64 11582  store i128 %in.elt, ptr %out.elt1.ptr, align 161583  %out.elt2.ptr = getelementptr i128, ptr %out.vec.ptr, i64 21584  store i128 %in.elt, ptr %out.elt2.ptr, align 321585  %out.elt3.ptr = getelementptr i128, ptr %out.vec.ptr, i64 31586  store i128 %in.elt, ptr %out.elt3.ptr, align 161587  ret void1588}1589 1590define void @vec512_i256(ptr %in.elt.ptr, ptr %out.vec.ptr) nounwind {1591; ALL-LABEL: vec512_i256:1592; ALL:       # %bb.0:1593; ALL-NEXT:    movq 16(%rdi), %rax1594; ALL-NEXT:    movq 24(%rdi), %rcx1595; ALL-NEXT:    movq (%rdi), %rdx1596; ALL-NEXT:    movq 8(%rdi), %rdi1597; ALL-NEXT:    notq %rdi1598; ALL-NEXT:    notq %rdx1599; ALL-NEXT:    notq %rcx1600; ALL-NEXT:    notq %rax1601; ALL-NEXT:    movq %rax, 16(%rsi)1602; ALL-NEXT:    movq %rcx, 24(%rsi)1603; ALL-NEXT:    movq %rdx, (%rsi)1604; ALL-NEXT:    movq %rdi, 8(%rsi)1605; ALL-NEXT:    movq %rax, 48(%rsi)1606; ALL-NEXT:    movq %rcx, 56(%rsi)1607; ALL-NEXT:    movq %rdx, 32(%rsi)1608; ALL-NEXT:    movq %rdi, 40(%rsi)1609; ALL-NEXT:    retq1610  %in.elt.not = load i256, ptr %in.elt.ptr, align 641611  %in.elt = xor i256 %in.elt.not, -11612  %out.elt0.ptr = getelementptr i256, ptr %out.vec.ptr, i64 01613  store i256 %in.elt, ptr %out.elt0.ptr, align 641614  %out.elt1.ptr = getelementptr i256, ptr %out.vec.ptr, i64 11615  store i256 %in.elt, ptr %out.elt1.ptr, align 321616  ret void1617}1618;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1619; AVX: {{.*}}1620; AVX1: {{.*}}1621; AVX2: {{.*}}1622; AVX512: {{.*}}1623; AVX512BW: {{.*}}1624; AVX512F: {{.*}}1625; SCALAR: {{.*}}1626; SSE: {{.*}}1627; SSE2: {{.*}}1628; SSE2-ONLY: {{.*}}1629; SSE3: {{.*}}1630; SSE41: {{.*}}1631; SSE42: {{.*}}1632; SSSE3: {{.*}}1633; SSSE3-ONLY: {{.*}}1634