brintos

brintos / llvm-project-archived public Read only

0
0
Text · 381.7 KiB · a48be03 Raw
7898 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=i386-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=CHECK,X86,SSE,X86-SSE3; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=i386-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=CHECK,X86,AVX,X86-AVX,AVX1,X86-AVX14; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=i386-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512dq,+avx512vl | FileCheck %s --check-prefixes=CHECK,X86,AVX,X86-AVX,AVX512,X86-AVX5125; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=CHECK,X64,SSE,X64-SSE6; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=CHECK,X64,AVX,X64-AVX,AVX1,X64-AVX17; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512dq,+avx512vl | FileCheck %s --check-prefixes=CHECK,X64,AVX,X64-AVX,AVX512,X64-AVX5128; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=x86_64-unknown-unknown-gnux32 -mattr=+sse2 | FileCheck %s --check-prefixes=CHECK,X32,SSE,X32-SSE9; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=x86_64-unknown-unknown-gnux32 -mattr=+avx | FileCheck %s --check-prefixes=CHECK,X32,AVX,X32-AVX,AVX1,X32-AVX110; RUN: llc < %s -show-mc-encoding -fast-isel -mtriple=x86_64-unknown-unknown-gnux32 -mattr=+avx512f,+avx512bw,+avx512dq,+avx512vl | FileCheck %s --check-prefixes=CHECK,X32,AVX,X32-AVX,AVX512,X32-AVX51211 12; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/sse2-builtins.c13 14define <2 x i64> @test_mm_add_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {15; SSE-LABEL: test_mm_add_epi8:16; SSE:       # %bb.0:17; SSE-NEXT:    paddb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xfc,0xc1]18; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]19;20; AVX1-LABEL: test_mm_add_epi8:21; AVX1:       # %bb.0:22; AVX1-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfc,0xc1]23; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]24;25; AVX512-LABEL: test_mm_add_epi8:26; AVX512:       # %bb.0:27; AVX512-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfc,0xc1]28; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]29  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>30  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>31  %res = add <16 x i8> %arg0, %arg132  %bc = bitcast <16 x i8> %res to <2 x i64>33  ret <2 x i64> %bc34}35 36define <2 x i64> @test_mm_add_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {37; SSE-LABEL: test_mm_add_epi16:38; SSE:       # %bb.0:39; SSE-NEXT:    paddw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xfd,0xc1]40; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]41;42; AVX1-LABEL: test_mm_add_epi16:43; AVX1:       # %bb.0:44; AVX1-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfd,0xc1]45; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]46;47; AVX512-LABEL: test_mm_add_epi16:48; AVX512:       # %bb.0:49; AVX512-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfd,0xc1]50; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]51  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>52  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>53  %res = add <8 x i16> %arg0, %arg154  %bc = bitcast <8 x i16> %res to <2 x i64>55  ret <2 x i64> %bc56}57 58define <2 x i64> @test_mm_add_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {59; SSE-LABEL: test_mm_add_epi32:60; SSE:       # %bb.0:61; SSE-NEXT:    paddd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xfe,0xc1]62; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]63;64; AVX1-LABEL: test_mm_add_epi32:65; AVX1:       # %bb.0:66; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfe,0xc1]67; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]68;69; AVX512-LABEL: test_mm_add_epi32:70; AVX512:       # %bb.0:71; AVX512-NEXT:    vpaddd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfe,0xc1]72; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]73  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>74  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>75  %res = add <4 x i32> %arg0, %arg176  %bc = bitcast <4 x i32> %res to <2 x i64>77  ret <2 x i64> %bc78}79 80define <2 x i64> @test_mm_add_epi64(<2 x i64> %a0, <2 x i64> %a1) nounwind {81; SSE-LABEL: test_mm_add_epi64:82; SSE:       # %bb.0:83; SSE-NEXT:    paddq %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd4,0xc1]84; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]85;86; AVX1-LABEL: test_mm_add_epi64:87; AVX1:       # %bb.0:88; AVX1-NEXT:    vpaddq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd4,0xc1]89; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]90;91; AVX512-LABEL: test_mm_add_epi64:92; AVX512:       # %bb.0:93; AVX512-NEXT:    vpaddq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd4,0xc1]94; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]95  %res = add <2 x i64> %a0, %a196  ret <2 x i64> %res97}98 99define <2 x double> @test_mm_add_pd(<2 x double> %a0, <2 x double> %a1) nounwind {100; SSE-LABEL: test_mm_add_pd:101; SSE:       # %bb.0:102; SSE-NEXT:    addpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x58,0xc1]103; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]104;105; AVX1-LABEL: test_mm_add_pd:106; AVX1:       # %bb.0:107; AVX1-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x58,0xc1]108; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]109;110; AVX512-LABEL: test_mm_add_pd:111; AVX512:       # %bb.0:112; AVX512-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x58,0xc1]113; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]114  %res = fadd <2 x double> %a0, %a1115  ret <2 x double> %res116}117 118define <2 x double> @test_mm_add_sd(<2 x double> %a0, <2 x double> %a1) nounwind {119; SSE-LABEL: test_mm_add_sd:120; SSE:       # %bb.0:121; SSE-NEXT:    addsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x58,0xc1]122; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]123;124; AVX1-LABEL: test_mm_add_sd:125; AVX1:       # %bb.0:126; AVX1-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x58,0xc1]127; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]128;129; AVX512-LABEL: test_mm_add_sd:130; AVX512:       # %bb.0:131; AVX512-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x58,0xc1]132; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]133  %ext0 = extractelement <2 x double> %a0, i32 0134  %ext1 = extractelement <2 x double> %a1, i32 0135  %fadd = fadd double %ext0, %ext1136  %res = insertelement <2 x double> %a0, double %fadd, i32 0137  ret <2 x double> %res138}139 140define <2 x i64> @test_mm_adds_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {141; SSE-LABEL: test_mm_adds_epi8:142; SSE:       # %bb.0:143; SSE-NEXT:    paddsb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xec,0xc1]144; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]145;146; AVX1-LABEL: test_mm_adds_epi8:147; AVX1:       # %bb.0:148; AVX1-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xec,0xc1]149; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]150;151; AVX512-LABEL: test_mm_adds_epi8:152; AVX512:       # %bb.0:153; AVX512-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xec,0xc1]154; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]155  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>156  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>157  %res = call <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8> %arg0, <16 x i8> %arg1)158  %bc = bitcast <16 x i8> %res to <2 x i64>159  ret <2 x i64> %bc160}161declare <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8>, <16 x i8>) nounwind readnone162 163define <2 x i64> @test_mm_adds_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {164; SSE-LABEL: test_mm_adds_epi16:165; SSE:       # %bb.0:166; SSE-NEXT:    paddsw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xed,0xc1]167; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]168;169; AVX1-LABEL: test_mm_adds_epi16:170; AVX1:       # %bb.0:171; AVX1-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xed,0xc1]172; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]173;174; AVX512-LABEL: test_mm_adds_epi16:175; AVX512:       # %bb.0:176; AVX512-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xed,0xc1]177; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]178  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>179  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>180  %res = call <8 x i16> @llvm.sadd.sat.v8i16(<8 x i16> %arg0, <8 x i16> %arg1)181  %bc = bitcast <8 x i16> %res to <2 x i64>182  ret <2 x i64> %bc183}184declare <8 x i16> @llvm.sadd.sat.v8i16(<8 x i16>, <8 x i16>) nounwind readnone185 186define <2 x i64> @test_mm_adds_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {187; SSE-LABEL: test_mm_adds_epu8:188; SSE:       # %bb.0:189; SSE-NEXT:    paddusb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xdc,0xc1]190; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]191;192; AVX1-LABEL: test_mm_adds_epu8:193; AVX1:       # %bb.0:194; AVX1-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xdc,0xc1]195; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]196;197; AVX512-LABEL: test_mm_adds_epu8:198; AVX512:       # %bb.0:199; AVX512-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdc,0xc1]200; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]201  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>202  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>203  %res = call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %arg0, <16 x i8> %arg1)204  %bc = bitcast <16 x i8> %res to <2 x i64>205  ret <2 x i64> %bc206}207declare <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8>, <16 x i8>)208 209define <2 x i64> @test_mm_adds_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind {210; SSE-LABEL: test_mm_adds_epu16:211; SSE:       # %bb.0:212; SSE-NEXT:    paddusw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xdd,0xc1]213; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]214;215; AVX1-LABEL: test_mm_adds_epu16:216; AVX1:       # %bb.0:217; AVX1-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xdd,0xc1]218; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]219;220; AVX512-LABEL: test_mm_adds_epu16:221; AVX512:       # %bb.0:222; AVX512-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdd,0xc1]223; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]224  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>225  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>226  %res = call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %arg0, <8 x i16> %arg1)227  %bc = bitcast <8 x i16> %res to <2 x i64>228  ret <2 x i64> %bc229}230declare <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16>, <8 x i16>)231 232define <2 x double> @test_mm_and_pd(<2 x double> %a0, <2 x double> %a1) nounwind {233; SSE-LABEL: test_mm_and_pd:234; SSE:       # %bb.0:235; SSE-NEXT:    andps %xmm1, %xmm0 # encoding: [0x0f,0x54,0xc1]236; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]237;238; AVX1-LABEL: test_mm_and_pd:239; AVX1:       # %bb.0:240; AVX1-NEXT:    vandps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x54,0xc1]241; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]242;243; AVX512-LABEL: test_mm_and_pd:244; AVX512:       # %bb.0:245; AVX512-NEXT:    vandps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x54,0xc1]246; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]247  %arg0 = bitcast <2 x double> %a0 to <4 x i32>248  %arg1 = bitcast <2 x double> %a1 to <4 x i32>249  %res = and <4 x i32> %arg0, %arg1250  %bc = bitcast <4 x i32> %res to <2 x double>251  ret <2 x double> %bc252}253 254define <2 x i64> @test_mm_and_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {255; SSE-LABEL: test_mm_and_si128:256; SSE:       # %bb.0:257; SSE-NEXT:    andps %xmm1, %xmm0 # encoding: [0x0f,0x54,0xc1]258; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]259;260; AVX1-LABEL: test_mm_and_si128:261; AVX1:       # %bb.0:262; AVX1-NEXT:    vandps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x54,0xc1]263; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]264;265; AVX512-LABEL: test_mm_and_si128:266; AVX512:       # %bb.0:267; AVX512-NEXT:    vandps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x54,0xc1]268; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]269  %res = and <2 x i64> %a0, %a1270  ret <2 x i64> %res271}272 273define <2 x double> @test_mm_andnot_pd(<2 x double> %a0, <2 x double> %a1) nounwind {274; SSE-LABEL: test_mm_andnot_pd:275; SSE:       # %bb.0:276; SSE-NEXT:    pcmpeqd %xmm2, %xmm2 # encoding: [0x66,0x0f,0x76,0xd2]277; SSE-NEXT:    pxor %xmm2, %xmm0 # encoding: [0x66,0x0f,0xef,0xc2]278; SSE-NEXT:    pand %xmm1, %xmm0 # encoding: [0x66,0x0f,0xdb,0xc1]279; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]280;281; AVX1-LABEL: test_mm_andnot_pd:282; AVX1:       # %bb.0:283; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2 # encoding: [0xc5,0xe9,0x76,0xd2]284; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xef,0xc2]285; AVX1-NEXT:    vpand %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xdb,0xc1]286; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]287;288; AVX512-LABEL: test_mm_andnot_pd:289; AVX512:       # %bb.0:290; AVX512-NEXT:    vpternlogq $15, %xmm0, %xmm0, %xmm0 # encoding: [0x62,0xf3,0xfd,0x08,0x25,0xc0,0x0f]291; AVX512-NEXT:    # xmm0 = ~xmm0292; AVX512-NEXT:    vpand %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdb,0xc1]293; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]294  %arg0 = bitcast <2 x double> %a0 to <4 x i32>295  %arg1 = bitcast <2 x double> %a1 to <4 x i32>296  %not = xor <4 x i32> %arg0, <i32 -1, i32 -1, i32 -1, i32 -1>297  %res = and <4 x i32> %not, %arg1298  %bc = bitcast <4 x i32> %res to <2 x double>299  ret <2 x double> %bc300}301 302define <2 x i64> @test_mm_andnot_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {303; SSE-LABEL: test_mm_andnot_si128:304; SSE:       # %bb.0:305; SSE-NEXT:    pcmpeqd %xmm2, %xmm2 # encoding: [0x66,0x0f,0x76,0xd2]306; SSE-NEXT:    pxor %xmm2, %xmm0 # encoding: [0x66,0x0f,0xef,0xc2]307; SSE-NEXT:    pand %xmm1, %xmm0 # encoding: [0x66,0x0f,0xdb,0xc1]308; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]309;310; AVX1-LABEL: test_mm_andnot_si128:311; AVX1:       # %bb.0:312; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2 # encoding: [0xc5,0xe9,0x76,0xd2]313; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xef,0xc2]314; AVX1-NEXT:    vpand %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xdb,0xc1]315; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]316;317; AVX512-LABEL: test_mm_andnot_si128:318; AVX512:       # %bb.0:319; AVX512-NEXT:    vpternlogq $15, %xmm0, %xmm0, %xmm0 # encoding: [0x62,0xf3,0xfd,0x08,0x25,0xc0,0x0f]320; AVX512-NEXT:    # xmm0 = ~xmm0321; AVX512-NEXT:    vpand %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdb,0xc1]322; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]323  %not = xor <2 x i64> %a0, <i64 -1, i64 -1>324  %res = and <2 x i64> %not, %a1325  ret <2 x i64> %res326}327 328define <2 x i64> @test_mm_avg_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {329; SSE-LABEL: test_mm_avg_epu8:330; SSE:       # %bb.0:331; SSE-NEXT:    pavgb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe0,0xc1]332; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]333;334; AVX1-LABEL: test_mm_avg_epu8:335; AVX1:       # %bb.0:336; AVX1-NEXT:    vpavgb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe0,0xc1]337; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]338;339; AVX512-LABEL: test_mm_avg_epu8:340; AVX512:       # %bb.0:341; AVX512-NEXT:    vpavgb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe0,0xc1]342; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]343  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>344  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>345  %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %arg0, <16 x i8> %arg1)346  %bc = bitcast <16 x i8> %res to <2 x i64>347  ret <2 x i64> %bc348}349declare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %arg0, <16 x i8> %arg1) nounwind readnone350 351define <2 x i64> @test_mm_avg_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind {352; SSE-LABEL: test_mm_avg_epu16:353; SSE:       # %bb.0:354; SSE-NEXT:    pavgw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe3,0xc1]355; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]356;357; AVX1-LABEL: test_mm_avg_epu16:358; AVX1:       # %bb.0:359; AVX1-NEXT:    vpavgw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe3,0xc1]360; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]361;362; AVX512-LABEL: test_mm_avg_epu16:363; AVX512:       # %bb.0:364; AVX512-NEXT:    vpavgw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe3,0xc1]365; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]366  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>367  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>368  %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %arg0, <8 x i16> %arg1)369  %bc = bitcast <8 x i16> %res to <2 x i64>370  ret <2 x i64> %bc371}372declare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone373 374define <2 x i64> @test_mm_bslli_si128(<2 x i64> %a0) nounwind {375; SSE-LABEL: test_mm_bslli_si128:376; SSE:       # %bb.0:377; SSE-NEXT:    pslldq $5, %xmm0 # encoding: [0x66,0x0f,0x73,0xf8,0x05]378; SSE-NEXT:    # xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]379; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]380;381; AVX1-LABEL: test_mm_bslli_si128:382; AVX1:       # %bb.0:383; AVX1-NEXT:    vpslldq $5, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x73,0xf8,0x05]384; AVX1-NEXT:    # xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]385; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]386;387; AVX512-LABEL: test_mm_bslli_si128:388; AVX512:       # %bb.0:389; AVX512-NEXT:    vpslldq $5, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x73,0xf8,0x05]390; AVX512-NEXT:    # xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]391; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]392  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>393  %res = shufflevector <16 x i8> zeroinitializer, <16 x i8> %arg0, <16 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26>394  %bc = bitcast <16 x i8> %res to <2 x i64>395  ret <2 x i64> %bc396}397 398define <2 x i64> @test_mm_bsrli_si128(<2 x i64> %a0) nounwind {399; SSE-LABEL: test_mm_bsrli_si128:400; SSE:       # %bb.0:401; SSE-NEXT:    psrldq $5, %xmm0 # encoding: [0x66,0x0f,0x73,0xd8,0x05]402; SSE-NEXT:    # xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero403; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]404;405; AVX1-LABEL: test_mm_bsrli_si128:406; AVX1:       # %bb.0:407; AVX1-NEXT:    vpsrldq $5, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x73,0xd8,0x05]408; AVX1-NEXT:    # xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero409; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]410;411; AVX512-LABEL: test_mm_bsrli_si128:412; AVX512:       # %bb.0:413; AVX512-NEXT:    vpsrldq $5, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x73,0xd8,0x05]414; AVX512-NEXT:    # xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero415; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]416  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>417  %res = shufflevector <16 x i8> %arg0, <16 x i8> zeroinitializer, <16 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20>418  %bc = bitcast <16 x i8> %res to <2 x i64>419  ret <2 x i64> %bc420}421 422define <4 x float> @test_mm_castpd_ps(<2 x double> %a0) nounwind {423; CHECK-LABEL: test_mm_castpd_ps:424; CHECK:       # %bb.0:425; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]426  %res = bitcast <2 x double> %a0 to <4 x float>427  ret <4 x float> %res428}429 430define <2 x i64> @test_mm_castpd_si128(<2 x double> %a0) nounwind {431; CHECK-LABEL: test_mm_castpd_si128:432; CHECK:       # %bb.0:433; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]434  %res = bitcast <2 x double> %a0 to <2 x i64>435  ret <2 x i64> %res436}437 438define <2 x double> @test_mm_castps_pd(<4 x float> %a0) nounwind {439; CHECK-LABEL: test_mm_castps_pd:440; CHECK:       # %bb.0:441; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]442  %res = bitcast <4 x float> %a0 to <2 x double>443  ret <2 x double> %res444}445 446define <2 x i64> @test_mm_castps_si128(<4 x float> %a0) nounwind {447; CHECK-LABEL: test_mm_castps_si128:448; CHECK:       # %bb.0:449; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]450  %res = bitcast <4 x float> %a0 to <2 x i64>451  ret <2 x i64> %res452}453 454define <2 x double> @test_mm_castsi128_pd(<2 x i64> %a0) nounwind {455; CHECK-LABEL: test_mm_castsi128_pd:456; CHECK:       # %bb.0:457; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]458  %res = bitcast <2 x i64> %a0 to <2 x double>459  ret <2 x double> %res460}461 462define <4 x float> @test_mm_castsi128_ps(<2 x i64> %a0) nounwind {463; CHECK-LABEL: test_mm_castsi128_ps:464; CHECK:       # %bb.0:465; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]466  %res = bitcast <2 x i64> %a0 to <4 x float>467  ret <4 x float> %res468}469 470define void @test_mm_clflush(ptr %a0) nounwind {471; X86-LABEL: test_mm_clflush:472; X86:       # %bb.0:473; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]474; X86-NEXT:    clflush (%eax) # encoding: [0x0f,0xae,0x38]475; X86-NEXT:    retl # encoding: [0xc3]476;477; X64-LABEL: test_mm_clflush:478; X64:       # %bb.0:479; X64-NEXT:    clflush (%rdi) # encoding: [0x0f,0xae,0x3f]480; X64-NEXT:    retq # encoding: [0xc3]481;482; X32-LABEL: test_mm_clflush:483; X32:       # %bb.0:484; X32-NEXT:    clflush (%edi) # encoding: [0x67,0x0f,0xae,0x3f]485; X32-NEXT:    retq # encoding: [0xc3]486  call void @llvm.x86.sse2.clflush(ptr %a0)487  ret void488}489declare void @llvm.x86.sse2.clflush(ptr) nounwind readnone490 491define <2 x i64> @test_mm_cmpeq_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {492; SSE-LABEL: test_mm_cmpeq_epi8:493; SSE:       # %bb.0:494; SSE-NEXT:    pcmpeqb %xmm1, %xmm0 # encoding: [0x66,0x0f,0x74,0xc1]495; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]496;497; AVX1-LABEL: test_mm_cmpeq_epi8:498; AVX1:       # %bb.0:499; AVX1-NEXT:    vpcmpeqb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x74,0xc1]500; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]501;502; AVX512-LABEL: test_mm_cmpeq_epi8:503; AVX512:       # %bb.0:504; AVX512-NEXT:    vpcmpeqb %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0x7d,0x08,0x74,0xc1]505; AVX512-NEXT:    vpmovm2b %k0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x28,0xc0]506; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]507  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>508  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>509  %cmp = icmp eq <16 x i8> %arg0, %arg1510  %res = sext <16 x i1> %cmp to <16 x i8>511  %bc = bitcast <16 x i8> %res to <2 x i64>512  ret <2 x i64> %bc513}514 515define <2 x i64> @test_mm_cmpeq_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {516; SSE-LABEL: test_mm_cmpeq_epi16:517; SSE:       # %bb.0:518; SSE-NEXT:    pcmpeqw %xmm1, %xmm0 # encoding: [0x66,0x0f,0x75,0xc1]519; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]520;521; AVX1-LABEL: test_mm_cmpeq_epi16:522; AVX1:       # %bb.0:523; AVX1-NEXT:    vpcmpeqw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x75,0xc1]524; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]525;526; AVX512-LABEL: test_mm_cmpeq_epi16:527; AVX512:       # %bb.0:528; AVX512-NEXT:    vpcmpeqw %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0x7d,0x08,0x75,0xc1]529; AVX512-NEXT:    vpmovm2w %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x28,0xc0]530; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]531  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>532  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>533  %cmp = icmp eq <8 x i16> %arg0, %arg1534  %res = sext <8 x i1> %cmp to <8 x i16>535  %bc = bitcast <8 x i16> %res to <2 x i64>536  ret <2 x i64> %bc537}538 539define <2 x i64> @test_mm_cmpeq_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {540; SSE-LABEL: test_mm_cmpeq_epi32:541; SSE:       # %bb.0:542; SSE-NEXT:    pcmpeqd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x76,0xc1]543; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]544;545; AVX1-LABEL: test_mm_cmpeq_epi32:546; AVX1:       # %bb.0:547; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x76,0xc1]548; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]549;550; AVX512-LABEL: test_mm_cmpeq_epi32:551; AVX512:       # %bb.0:552; AVX512-NEXT:    vpcmpeqd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0x7d,0x08,0x76,0xc1]553; AVX512-NEXT:    vpmovm2d %k0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x38,0xc0]554; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]555  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>556  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>557  %cmp = icmp eq <4 x i32> %arg0, %arg1558  %res = sext <4 x i1> %cmp to <4 x i32>559  %bc = bitcast <4 x i32> %res to <2 x i64>560  ret <2 x i64> %bc561}562 563define <2 x double> @test_mm_cmpeq_pd(<2 x double> %a0, <2 x double> %a1) nounwind {564; SSE-LABEL: test_mm_cmpeq_pd:565; SSE:       # %bb.0:566; SSE-NEXT:    cmpeqpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x00]567; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]568;569; AVX1-LABEL: test_mm_cmpeq_pd:570; AVX1:       # %bb.0:571; AVX1-NEXT:    vcmpeqpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x00]572; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]573;574; AVX512-LABEL: test_mm_cmpeq_pd:575; AVX512:       # %bb.0:576; AVX512-NEXT:    vcmpeqpd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x00]577; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]578; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]579  %fcmp = fcmp oeq <2 x double> %a0, %a1580  %sext = sext <2 x i1> %fcmp to <2 x i64>581  %res = bitcast <2 x i64> %sext to <2 x double>582  ret <2 x double> %res583}584 585define <2 x double> @test_mm_cmpeq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {586; SSE-LABEL: test_mm_cmpeq_sd:587; SSE:       # %bb.0:588; SSE-NEXT:    cmpeqsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x00]589; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]590;591; AVX-LABEL: test_mm_cmpeq_sd:592; AVX:       # %bb.0:593; AVX-NEXT:    vcmpeqsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x00]594; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]595  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 0)596  ret <2 x double> %res597}598declare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone599 600define <2 x double> @test_mm_cmpge_pd(<2 x double> %a0, <2 x double> %a1) nounwind {601; SSE-LABEL: test_mm_cmpge_pd:602; SSE:       # %bb.0:603; SSE-NEXT:    cmplepd %xmm0, %xmm1 # encoding: [0x66,0x0f,0xc2,0xc8,0x02]604; SSE-NEXT:    movapd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x28,0xc1]605; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]606;607; AVX1-LABEL: test_mm_cmpge_pd:608; AVX1:       # %bb.0:609; AVX1-NEXT:    vcmplepd %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0xc2,0xc0,0x02]610; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]611;612; AVX512-LABEL: test_mm_cmpge_pd:613; AVX512:       # %bb.0:614; AVX512-NEXT:    vcmplepd %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0xf5,0x08,0xc2,0xc0,0x02]615; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]616; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]617  %fcmp = fcmp ole <2 x double> %a1, %a0618  %sext = sext <2 x i1> %fcmp to <2 x i64>619  %res = bitcast <2 x i64> %sext to <2 x double>620  ret <2 x double> %res621}622 623define <2 x double> @test_mm_cmpge_sd(<2 x double> %a0, <2 x double> %a1) nounwind {624; SSE-LABEL: test_mm_cmpge_sd:625; SSE:       # %bb.0:626; SSE-NEXT:    cmplesd %xmm0, %xmm1 # encoding: [0xf2,0x0f,0xc2,0xc8,0x02]627; SSE-NEXT:    movsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x10,0xc1]628; SSE-NEXT:    # xmm0 = xmm1[0],xmm0[1]629; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]630;631; AVX-LABEL: test_mm_cmpge_sd:632; AVX:       # %bb.0:633; AVX-NEXT:    vcmplesd %xmm0, %xmm1, %xmm1 # encoding: [0xc5,0xf3,0xc2,0xc8,0x02]634; AVX-NEXT:    vmovsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x10,0xc1]635; AVX-NEXT:    # xmm0 = xmm1[0],xmm0[1]636; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]637  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 2)638  %ext0 = extractelement <2 x double> %cmp, i32 0639  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0640  %ext1 = extractelement <2 x double> %a0, i32 1641  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1642  ret <2 x double> %ins1643}644 645define <2 x i64> @test_mm_cmpgt_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {646; SSE-LABEL: test_mm_cmpgt_epi8:647; SSE:       # %bb.0:648; SSE-NEXT:    pcmpgtb %xmm1, %xmm0 # encoding: [0x66,0x0f,0x64,0xc1]649; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]650;651; AVX1-LABEL: test_mm_cmpgt_epi8:652; AVX1:       # %bb.0:653; AVX1-NEXT:    vpcmpgtb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x64,0xc1]654; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]655;656; AVX512-LABEL: test_mm_cmpgt_epi8:657; AVX512:       # %bb.0:658; AVX512-NEXT:    vpcmpgtb %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0x7d,0x08,0x64,0xc1]659; AVX512-NEXT:    vpmovm2b %k0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x28,0xc0]660; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]661  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>662  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>663  %cmp = icmp sgt <16 x i8> %arg0, %arg1664  %res = sext <16 x i1> %cmp to <16 x i8>665  %bc = bitcast <16 x i8> %res to <2 x i64>666  ret <2 x i64> %bc667}668 669define <2 x i64> @test_mm_cmpgt_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {670; SSE-LABEL: test_mm_cmpgt_epi16:671; SSE:       # %bb.0:672; SSE-NEXT:    pcmpgtw %xmm1, %xmm0 # encoding: [0x66,0x0f,0x65,0xc1]673; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]674;675; AVX1-LABEL: test_mm_cmpgt_epi16:676; AVX1:       # %bb.0:677; AVX1-NEXT:    vpcmpgtw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x65,0xc1]678; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]679;680; AVX512-LABEL: test_mm_cmpgt_epi16:681; AVX512:       # %bb.0:682; AVX512-NEXT:    vpcmpgtw %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0x7d,0x08,0x65,0xc1]683; AVX512-NEXT:    vpmovm2w %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x28,0xc0]684; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]685  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>686  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>687  %cmp = icmp sgt <8 x i16> %arg0, %arg1688  %res = sext <8 x i1> %cmp to <8 x i16>689  %bc = bitcast <8 x i16> %res to <2 x i64>690  ret <2 x i64> %bc691}692 693define <2 x i64> @test_mm_cmpgt_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {694; SSE-LABEL: test_mm_cmpgt_epi32:695; SSE:       # %bb.0:696; SSE-NEXT:    pcmpgtd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x66,0xc1]697; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]698;699; AVX1-LABEL: test_mm_cmpgt_epi32:700; AVX1:       # %bb.0:701; AVX1-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x66,0xc1]702; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]703;704; AVX512-LABEL: test_mm_cmpgt_epi32:705; AVX512:       # %bb.0:706; AVX512-NEXT:    vpcmpgtd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0x7d,0x08,0x66,0xc1]707; AVX512-NEXT:    vpmovm2d %k0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x38,0xc0]708; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]709  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>710  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>711  %cmp = icmp sgt <4 x i32> %arg0, %arg1712  %res = sext <4 x i1> %cmp to <4 x i32>713  %bc = bitcast <4 x i32> %res to <2 x i64>714  ret <2 x i64> %bc715}716 717define <2 x double> @test_mm_cmpgt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {718; SSE-LABEL: test_mm_cmpgt_pd:719; SSE:       # %bb.0:720; SSE-NEXT:    cmpltpd %xmm0, %xmm1 # encoding: [0x66,0x0f,0xc2,0xc8,0x01]721; SSE-NEXT:    movapd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x28,0xc1]722; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]723;724; AVX1-LABEL: test_mm_cmpgt_pd:725; AVX1:       # %bb.0:726; AVX1-NEXT:    vcmpltpd %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0xc2,0xc0,0x01]727; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]728;729; AVX512-LABEL: test_mm_cmpgt_pd:730; AVX512:       # %bb.0:731; AVX512-NEXT:    vcmpltpd %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0xf5,0x08,0xc2,0xc0,0x01]732; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]733; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]734  %fcmp = fcmp olt <2 x double> %a1, %a0735  %sext = sext <2 x i1> %fcmp to <2 x i64>736  %res = bitcast <2 x i64> %sext to <2 x double>737  ret <2 x double> %res738}739 740define <2 x double> @test_mm_cmpgt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {741; SSE-LABEL: test_mm_cmpgt_sd:742; SSE:       # %bb.0:743; SSE-NEXT:    cmpltsd %xmm0, %xmm1 # encoding: [0xf2,0x0f,0xc2,0xc8,0x01]744; SSE-NEXT:    movsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x10,0xc1]745; SSE-NEXT:    # xmm0 = xmm1[0],xmm0[1]746; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]747;748; AVX-LABEL: test_mm_cmpgt_sd:749; AVX:       # %bb.0:750; AVX-NEXT:    vcmpltsd %xmm0, %xmm1, %xmm1 # encoding: [0xc5,0xf3,0xc2,0xc8,0x01]751; AVX-NEXT:    vmovsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x10,0xc1]752; AVX-NEXT:    # xmm0 = xmm1[0],xmm0[1]753; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]754  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 1)755  %ext0 = extractelement <2 x double> %cmp, i32 0756  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0757  %ext1 = extractelement <2 x double> %a0, i32 1758  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1759  ret <2 x double> %ins1760}761 762define <2 x double> @test_mm_cmple_pd(<2 x double> %a0, <2 x double> %a1) nounwind {763; SSE-LABEL: test_mm_cmple_pd:764; SSE:       # %bb.0:765; SSE-NEXT:    cmplepd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x02]766; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]767;768; AVX1-LABEL: test_mm_cmple_pd:769; AVX1:       # %bb.0:770; AVX1-NEXT:    vcmplepd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x02]771; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]772;773; AVX512-LABEL: test_mm_cmple_pd:774; AVX512:       # %bb.0:775; AVX512-NEXT:    vcmplepd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x02]776; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]777; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]778  %fcmp = fcmp ole <2 x double> %a0, %a1779  %sext = sext <2 x i1> %fcmp to <2 x i64>780  %res = bitcast <2 x i64> %sext to <2 x double>781  ret <2 x double> %res782}783 784define <2 x double> @test_mm_cmple_sd(<2 x double> %a0, <2 x double> %a1) nounwind {785; SSE-LABEL: test_mm_cmple_sd:786; SSE:       # %bb.0:787; SSE-NEXT:    cmplesd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x02]788; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]789;790; AVX-LABEL: test_mm_cmple_sd:791; AVX:       # %bb.0:792; AVX-NEXT:    vcmplesd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x02]793; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]794  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 2)795  ret <2 x double> %res796}797 798define <2 x i64> @test_mm_cmplt_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {799; SSE-LABEL: test_mm_cmplt_epi8:800; SSE:       # %bb.0:801; SSE-NEXT:    pcmpgtb %xmm0, %xmm1 # encoding: [0x66,0x0f,0x64,0xc8]802; SSE-NEXT:    movdqa %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6f,0xc1]803; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]804;805; AVX1-LABEL: test_mm_cmplt_epi8:806; AVX1:       # %bb.0:807; AVX1-NEXT:    vpcmpgtb %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x64,0xc0]808; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]809;810; AVX512-LABEL: test_mm_cmplt_epi8:811; AVX512:       # %bb.0:812; AVX512-NEXT:    vpcmpgtb %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0x75,0x08,0x64,0xc0]813; AVX512-NEXT:    vpmovm2b %k0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x28,0xc0]814; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]815  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>816  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>817  %cmp = icmp sgt <16 x i8> %arg1, %arg0818  %res = sext <16 x i1> %cmp to <16 x i8>819  %bc = bitcast <16 x i8> %res to <2 x i64>820  ret <2 x i64> %bc821}822 823define <2 x i64> @test_mm_cmplt_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {824; SSE-LABEL: test_mm_cmplt_epi16:825; SSE:       # %bb.0:826; SSE-NEXT:    pcmpgtw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x65,0xc8]827; SSE-NEXT:    movdqa %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6f,0xc1]828; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]829;830; AVX1-LABEL: test_mm_cmplt_epi16:831; AVX1:       # %bb.0:832; AVX1-NEXT:    vpcmpgtw %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x65,0xc0]833; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]834;835; AVX512-LABEL: test_mm_cmplt_epi16:836; AVX512:       # %bb.0:837; AVX512-NEXT:    vpcmpgtw %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0x75,0x08,0x65,0xc0]838; AVX512-NEXT:    vpmovm2w %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x28,0xc0]839; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]840  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>841  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>842  %cmp = icmp sgt <8 x i16> %arg1, %arg0843  %res = sext <8 x i1> %cmp to <8 x i16>844  %bc = bitcast <8 x i16> %res to <2 x i64>845  ret <2 x i64> %bc846}847 848define <2 x i64> @test_mm_cmplt_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {849; SSE-LABEL: test_mm_cmplt_epi32:850; SSE:       # %bb.0:851; SSE-NEXT:    pcmpgtd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x66,0xc8]852; SSE-NEXT:    movdqa %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6f,0xc1]853; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]854;855; AVX1-LABEL: test_mm_cmplt_epi32:856; AVX1:       # %bb.0:857; AVX1-NEXT:    vpcmpgtd %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x66,0xc0]858; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]859;860; AVX512-LABEL: test_mm_cmplt_epi32:861; AVX512:       # %bb.0:862; AVX512-NEXT:    vpcmpgtd %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0x75,0x08,0x66,0xc0]863; AVX512-NEXT:    vpmovm2d %k0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x38,0xc0]864; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]865  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>866  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>867  %cmp = icmp sgt <4 x i32> %arg1, %arg0868  %res = sext <4 x i1> %cmp to <4 x i32>869  %bc = bitcast <4 x i32> %res to <2 x i64>870  ret <2 x i64> %bc871}872 873define <2 x double> @test_mm_cmplt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {874; SSE-LABEL: test_mm_cmplt_pd:875; SSE:       # %bb.0:876; SSE-NEXT:    cmpltpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x01]877; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]878;879; AVX1-LABEL: test_mm_cmplt_pd:880; AVX1:       # %bb.0:881; AVX1-NEXT:    vcmpltpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x01]882; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]883;884; AVX512-LABEL: test_mm_cmplt_pd:885; AVX512:       # %bb.0:886; AVX512-NEXT:    vcmpltpd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x01]887; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]888; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]889  %fcmp = fcmp olt <2 x double> %a0, %a1890  %sext = sext <2 x i1> %fcmp to <2 x i64>891  %res = bitcast <2 x i64> %sext to <2 x double>892  ret <2 x double> %res893}894 895define <2 x double> @test_mm_cmplt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {896; SSE-LABEL: test_mm_cmplt_sd:897; SSE:       # %bb.0:898; SSE-NEXT:    cmpltsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x01]899; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]900;901; AVX-LABEL: test_mm_cmplt_sd:902; AVX:       # %bb.0:903; AVX-NEXT:    vcmpltsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x01]904; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]905  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 1)906  ret <2 x double> %res907}908 909define <2 x double> @test_mm_cmpneq_pd(<2 x double> %a0, <2 x double> %a1) nounwind {910; SSE-LABEL: test_mm_cmpneq_pd:911; SSE:       # %bb.0:912; SSE-NEXT:    cmpneqpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x04]913; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]914;915; AVX1-LABEL: test_mm_cmpneq_pd:916; AVX1:       # %bb.0:917; AVX1-NEXT:    vcmpneqpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x04]918; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]919;920; AVX512-LABEL: test_mm_cmpneq_pd:921; AVX512:       # %bb.0:922; AVX512-NEXT:    vcmpneqpd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x04]923; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]924; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]925  %fcmp = fcmp une <2 x double> %a0, %a1926  %sext = sext <2 x i1> %fcmp to <2 x i64>927  %res = bitcast <2 x i64> %sext to <2 x double>928  ret <2 x double> %res929}930 931define <2 x double> @test_mm_cmpneq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {932; SSE-LABEL: test_mm_cmpneq_sd:933; SSE:       # %bb.0:934; SSE-NEXT:    cmpneqsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x04]935; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]936;937; AVX-LABEL: test_mm_cmpneq_sd:938; AVX:       # %bb.0:939; AVX-NEXT:    vcmpneqsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x04]940; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]941  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 4)942  ret <2 x double> %res943}944 945define <2 x double> @test_mm_cmpnge_pd(<2 x double> %a0, <2 x double> %a1) nounwind {946; SSE-LABEL: test_mm_cmpnge_pd:947; SSE:       # %bb.0:948; SSE-NEXT:    cmpnlepd %xmm0, %xmm1 # encoding: [0x66,0x0f,0xc2,0xc8,0x06]949; SSE-NEXT:    movapd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x28,0xc1]950; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]951;952; AVX1-LABEL: test_mm_cmpnge_pd:953; AVX1:       # %bb.0:954; AVX1-NEXT:    vcmpnlepd %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0xc2,0xc0,0x06]955; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]956;957; AVX512-LABEL: test_mm_cmpnge_pd:958; AVX512:       # %bb.0:959; AVX512-NEXT:    vcmpnlepd %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0xf5,0x08,0xc2,0xc0,0x06]960; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]961; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]962  %fcmp = fcmp ugt <2 x double> %a1, %a0963  %sext = sext <2 x i1> %fcmp to <2 x i64>964  %res = bitcast <2 x i64> %sext to <2 x double>965  ret <2 x double> %res966}967 968define <2 x double> @test_mm_cmpnge_sd(<2 x double> %a0, <2 x double> %a1) nounwind {969; SSE-LABEL: test_mm_cmpnge_sd:970; SSE:       # %bb.0:971; SSE-NEXT:    cmpnlesd %xmm0, %xmm1 # encoding: [0xf2,0x0f,0xc2,0xc8,0x06]972; SSE-NEXT:    movsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x10,0xc1]973; SSE-NEXT:    # xmm0 = xmm1[0],xmm0[1]974; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]975;976; AVX-LABEL: test_mm_cmpnge_sd:977; AVX:       # %bb.0:978; AVX-NEXT:    vcmpnlesd %xmm0, %xmm1, %xmm1 # encoding: [0xc5,0xf3,0xc2,0xc8,0x06]979; AVX-NEXT:    vmovsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x10,0xc1]980; AVX-NEXT:    # xmm0 = xmm1[0],xmm0[1]981; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]982  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 6)983  %ext0 = extractelement <2 x double> %cmp, i32 0984  %ins0 = insertelement <2 x double> undef, double %ext0, i32 0985  %ext1 = extractelement <2 x double> %a0, i32 1986  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1987  ret <2 x double> %ins1988}989 990define <2 x double> @test_mm_cmpngt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {991; SSE-LABEL: test_mm_cmpngt_pd:992; SSE:       # %bb.0:993; SSE-NEXT:    cmpnltpd %xmm0, %xmm1 # encoding: [0x66,0x0f,0xc2,0xc8,0x05]994; SSE-NEXT:    movapd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x28,0xc1]995; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]996;997; AVX1-LABEL: test_mm_cmpngt_pd:998; AVX1:       # %bb.0:999; AVX1-NEXT:    vcmpnltpd %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0xc2,0xc0,0x05]1000; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1001;1002; AVX512-LABEL: test_mm_cmpngt_pd:1003; AVX512:       # %bb.0:1004; AVX512-NEXT:    vcmpnltpd %xmm0, %xmm1, %k0 # encoding: [0x62,0xf1,0xf5,0x08,0xc2,0xc0,0x05]1005; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]1006; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1007  %fcmp = fcmp uge <2 x double> %a1, %a01008  %sext = sext <2 x i1> %fcmp to <2 x i64>1009  %res = bitcast <2 x i64> %sext to <2 x double>1010  ret <2 x double> %res1011}1012 1013define <2 x double> @test_mm_cmpngt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1014; SSE-LABEL: test_mm_cmpngt_sd:1015; SSE:       # %bb.0:1016; SSE-NEXT:    cmpnltsd %xmm0, %xmm1 # encoding: [0xf2,0x0f,0xc2,0xc8,0x05]1017; SSE-NEXT:    movsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x10,0xc1]1018; SSE-NEXT:    # xmm0 = xmm1[0],xmm0[1]1019; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1020;1021; AVX-LABEL: test_mm_cmpngt_sd:1022; AVX:       # %bb.0:1023; AVX-NEXT:    vcmpnltsd %xmm0, %xmm1, %xmm1 # encoding: [0xc5,0xf3,0xc2,0xc8,0x05]1024; AVX-NEXT:    vmovsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x10,0xc1]1025; AVX-NEXT:    # xmm0 = xmm1[0],xmm0[1]1026; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1027  %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 5)1028  %ext0 = extractelement <2 x double> %cmp, i32 01029  %ins0 = insertelement <2 x double> undef, double %ext0, i32 01030  %ext1 = extractelement <2 x double> %a0, i32 11031  %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 11032  ret <2 x double> %ins11033}1034 1035define <2 x double> @test_mm_cmpnle_pd(<2 x double> %a0, <2 x double> %a1) nounwind {1036; SSE-LABEL: test_mm_cmpnle_pd:1037; SSE:       # %bb.0:1038; SSE-NEXT:    cmpnlepd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x06]1039; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1040;1041; AVX1-LABEL: test_mm_cmpnle_pd:1042; AVX1:       # %bb.0:1043; AVX1-NEXT:    vcmpnlepd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x06]1044; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1045;1046; AVX512-LABEL: test_mm_cmpnle_pd:1047; AVX512:       # %bb.0:1048; AVX512-NEXT:    vcmpnlepd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x06]1049; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]1050; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1051  %fcmp = fcmp ugt <2 x double> %a0, %a11052  %sext = sext <2 x i1> %fcmp to <2 x i64>1053  %res = bitcast <2 x i64> %sext to <2 x double>1054  ret <2 x double> %res1055}1056 1057define <2 x double> @test_mm_cmpnle_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1058; SSE-LABEL: test_mm_cmpnle_sd:1059; SSE:       # %bb.0:1060; SSE-NEXT:    cmpnlesd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x06]1061; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1062;1063; AVX-LABEL: test_mm_cmpnle_sd:1064; AVX:       # %bb.0:1065; AVX-NEXT:    vcmpnlesd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x06]1066; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1067  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 6)1068  ret <2 x double> %res1069}1070 1071define <2 x double> @test_mm_cmpnlt_pd(<2 x double> %a0, <2 x double> %a1) nounwind {1072; SSE-LABEL: test_mm_cmpnlt_pd:1073; SSE:       # %bb.0:1074; SSE-NEXT:    cmpnltpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x05]1075; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1076;1077; AVX1-LABEL: test_mm_cmpnlt_pd:1078; AVX1:       # %bb.0:1079; AVX1-NEXT:    vcmpnltpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x05]1080; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1081;1082; AVX512-LABEL: test_mm_cmpnlt_pd:1083; AVX512:       # %bb.0:1084; AVX512-NEXT:    vcmpnltpd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x05]1085; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]1086; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1087  %fcmp = fcmp uge <2 x double> %a0, %a11088  %sext = sext <2 x i1> %fcmp to <2 x i64>1089  %res = bitcast <2 x i64> %sext to <2 x double>1090  ret <2 x double> %res1091}1092 1093define <2 x double> @test_mm_cmpnlt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1094; SSE-LABEL: test_mm_cmpnlt_sd:1095; SSE:       # %bb.0:1096; SSE-NEXT:    cmpnltsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x05]1097; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1098;1099; AVX-LABEL: test_mm_cmpnlt_sd:1100; AVX:       # %bb.0:1101; AVX-NEXT:    vcmpnltsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x05]1102; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1103  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 5)1104  ret <2 x double> %res1105}1106 1107define <2 x double> @test_mm_cmpord_pd(<2 x double> %a0, <2 x double> %a1) nounwind {1108; SSE-LABEL: test_mm_cmpord_pd:1109; SSE:       # %bb.0:1110; SSE-NEXT:    cmpordpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x07]1111; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1112;1113; AVX1-LABEL: test_mm_cmpord_pd:1114; AVX1:       # %bb.0:1115; AVX1-NEXT:    vcmpordpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x07]1116; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1117;1118; AVX512-LABEL: test_mm_cmpord_pd:1119; AVX512:       # %bb.0:1120; AVX512-NEXT:    vcmpordpd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x07]1121; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]1122; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1123  %fcmp = fcmp ord <2 x double> %a0, %a11124  %sext = sext <2 x i1> %fcmp to <2 x i64>1125  %res = bitcast <2 x i64> %sext to <2 x double>1126  ret <2 x double> %res1127}1128 1129define <2 x double> @test_mm_cmpord_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1130; SSE-LABEL: test_mm_cmpord_sd:1131; SSE:       # %bb.0:1132; SSE-NEXT:    cmpordsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x07]1133; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1134;1135; AVX-LABEL: test_mm_cmpord_sd:1136; AVX:       # %bb.0:1137; AVX-NEXT:    vcmpordsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x07]1138; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1139  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7)1140  ret <2 x double> %res1141}1142 1143define <2 x double> @test_mm_cmpunord_pd(<2 x double> %a0, <2 x double> %a1) nounwind {1144; SSE-LABEL: test_mm_cmpunord_pd:1145; SSE:       # %bb.0:1146; SSE-NEXT:    cmpunordpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xc2,0xc1,0x03]1147; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1148;1149; AVX1-LABEL: test_mm_cmpunord_pd:1150; AVX1:       # %bb.0:1151; AVX1-NEXT:    vcmpunordpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc2,0xc1,0x03]1152; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1153;1154; AVX512-LABEL: test_mm_cmpunord_pd:1155; AVX512:       # %bb.0:1156; AVX512-NEXT:    vcmpunordpd %xmm1, %xmm0, %k0 # encoding: [0x62,0xf1,0xfd,0x08,0xc2,0xc1,0x03]1157; AVX512-NEXT:    vpmovm2q %k0, %xmm0 # encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]1158; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1159  %fcmp = fcmp uno <2 x double> %a0, %a11160  %sext = sext <2 x i1> %fcmp to <2 x i64>1161  %res = bitcast <2 x i64> %sext to <2 x double>1162  ret <2 x double> %res1163}1164 1165define <2 x double> @test_mm_cmpunord_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1166; SSE-LABEL: test_mm_cmpunord_sd:1167; SSE:       # %bb.0:1168; SSE-NEXT:    cmpunordsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0xc2,0xc1,0x03]1169; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1170;1171; AVX-LABEL: test_mm_cmpunord_sd:1172; AVX:       # %bb.0:1173; AVX-NEXT:    vcmpunordsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xc2,0xc1,0x03]1174; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1175  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 3)1176  ret <2 x double> %res1177}1178 1179define i32 @test_mm_comieq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1180; SSE-LABEL: test_mm_comieq_sd:1181; SSE:       # %bb.0:1182; SSE-NEXT:    comisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2f,0xc1]1183; SSE-NEXT:    setnp %al # encoding: [0x0f,0x9b,0xc0]1184; SSE-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]1185; SSE-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]1186; SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]1187; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1188;1189; AVX1-LABEL: test_mm_comieq_sd:1190; AVX1:       # %bb.0:1191; AVX1-NEXT:    vcomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2f,0xc1]1192; AVX1-NEXT:    setnp %al # encoding: [0x0f,0x9b,0xc0]1193; AVX1-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]1194; AVX1-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]1195; AVX1-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]1196; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1197;1198; AVX512-LABEL: test_mm_comieq_sd:1199; AVX512:       # %bb.0:1200; AVX512-NEXT:    vcomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2f,0xc1]1201; AVX512-NEXT:    setnp %al # encoding: [0x0f,0x9b,0xc0]1202; AVX512-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]1203; AVX512-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]1204; AVX512-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]1205; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1206  %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1)1207  ret i32 %res1208}1209declare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone1210 1211define i32 @test_mm_comige_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1212; SSE-LABEL: test_mm_comige_sd:1213; SSE:       # %bb.0:1214; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1215; SSE-NEXT:    comisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2f,0xc1]1216; SSE-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]1217; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1218;1219; AVX1-LABEL: test_mm_comige_sd:1220; AVX1:       # %bb.0:1221; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1222; AVX1-NEXT:    vcomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2f,0xc1]1223; AVX1-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]1224; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1225;1226; AVX512-LABEL: test_mm_comige_sd:1227; AVX512:       # %bb.0:1228; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1229; AVX512-NEXT:    vcomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2f,0xc1]1230; AVX512-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]1231; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1232  %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1)1233  ret i32 %res1234}1235declare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone1236 1237define i32 @test_mm_comigt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1238; SSE-LABEL: test_mm_comigt_sd:1239; SSE:       # %bb.0:1240; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1241; SSE-NEXT:    comisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2f,0xc1]1242; SSE-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]1243; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1244;1245; AVX1-LABEL: test_mm_comigt_sd:1246; AVX1:       # %bb.0:1247; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1248; AVX1-NEXT:    vcomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2f,0xc1]1249; AVX1-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]1250; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1251;1252; AVX512-LABEL: test_mm_comigt_sd:1253; AVX512:       # %bb.0:1254; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1255; AVX512-NEXT:    vcomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2f,0xc1]1256; AVX512-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]1257; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1258  %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1)1259  ret i32 %res1260}1261declare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone1262 1263define i32 @test_mm_comile_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1264; SSE-LABEL: test_mm_comile_sd:1265; SSE:       # %bb.0:1266; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1267; SSE-NEXT:    comisd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x2f,0xc8]1268; SSE-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]1269; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1270;1271; AVX1-LABEL: test_mm_comile_sd:1272; AVX1:       # %bb.0:1273; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1274; AVX1-NEXT:    vcomisd %xmm0, %xmm1 # encoding: [0xc5,0xf9,0x2f,0xc8]1275; AVX1-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]1276; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1277;1278; AVX512-LABEL: test_mm_comile_sd:1279; AVX512:       # %bb.0:1280; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1281; AVX512-NEXT:    vcomisd %xmm0, %xmm1 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2f,0xc8]1282; AVX512-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]1283; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1284  %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1)1285  ret i32 %res1286}1287declare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone1288 1289define i32 @test_mm_comilt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1290; SSE-LABEL: test_mm_comilt_sd:1291; SSE:       # %bb.0:1292; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1293; SSE-NEXT:    comisd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x2f,0xc8]1294; SSE-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]1295; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1296;1297; AVX1-LABEL: test_mm_comilt_sd:1298; AVX1:       # %bb.0:1299; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1300; AVX1-NEXT:    vcomisd %xmm0, %xmm1 # encoding: [0xc5,0xf9,0x2f,0xc8]1301; AVX1-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]1302; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1303;1304; AVX512-LABEL: test_mm_comilt_sd:1305; AVX512:       # %bb.0:1306; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1307; AVX512-NEXT:    vcomisd %xmm0, %xmm1 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2f,0xc8]1308; AVX512-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]1309; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1310  %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1)1311  ret i32 %res1312}1313declare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone1314 1315define i32 @test_mm_comineq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1316; SSE-LABEL: test_mm_comineq_sd:1317; SSE:       # %bb.0:1318; SSE-NEXT:    comisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2f,0xc1]1319; SSE-NEXT:    setp %al # encoding: [0x0f,0x9a,0xc0]1320; SSE-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]1321; SSE-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]1322; SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]1323; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1324;1325; AVX1-LABEL: test_mm_comineq_sd:1326; AVX1:       # %bb.0:1327; AVX1-NEXT:    vcomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2f,0xc1]1328; AVX1-NEXT:    setp %al # encoding: [0x0f,0x9a,0xc0]1329; AVX1-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]1330; AVX1-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]1331; AVX1-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]1332; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1333;1334; AVX512-LABEL: test_mm_comineq_sd:1335; AVX512:       # %bb.0:1336; AVX512-NEXT:    vcomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2f,0xc1]1337; AVX512-NEXT:    setp %al # encoding: [0x0f,0x9a,0xc0]1338; AVX512-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]1339; AVX512-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]1340; AVX512-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]1341; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1342  %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1)1343  ret i32 %res1344}1345declare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone1346 1347define <2 x double> @test_mm_cvtepi32_pd(<2 x i64> %a0) nounwind {1348; SSE-LABEL: test_mm_cvtepi32_pd:1349; SSE:       # %bb.0:1350; SSE-NEXT:    cvtdq2pd %xmm0, %xmm0 # encoding: [0xf3,0x0f,0xe6,0xc0]1351; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1352;1353; AVX1-LABEL: test_mm_cvtepi32_pd:1354; AVX1:       # %bb.0:1355; AVX1-NEXT:    vcvtdq2pd %xmm0, %xmm0 # encoding: [0xc5,0xfa,0xe6,0xc0]1356; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1357;1358; AVX512-LABEL: test_mm_cvtepi32_pd:1359; AVX512:       # %bb.0:1360; AVX512-NEXT:    vcvtdq2pd %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0xe6,0xc0]1361; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1362  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>1363  %ext = shufflevector <4 x i32> %arg0, <4 x i32> %arg0, <2 x i32> <i32 0, i32 1>1364  %res = sitofp <2 x i32> %ext to <2 x double>1365  ret <2 x double> %res1366}1367 1368define <4 x float> @test_mm_cvtepi32_ps(<2 x i64> %a0) nounwind {1369; SSE-LABEL: test_mm_cvtepi32_ps:1370; SSE:       # %bb.0:1371; SSE-NEXT:    cvtdq2ps %xmm0, %xmm0 # encoding: [0x0f,0x5b,0xc0]1372; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1373;1374; AVX1-LABEL: test_mm_cvtepi32_ps:1375; AVX1:       # %bb.0:1376; AVX1-NEXT:    vcvtdq2ps %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x5b,0xc0]1377; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1378;1379; AVX512-LABEL: test_mm_cvtepi32_ps:1380; AVX512:       # %bb.0:1381; AVX512-NEXT:    vcvtdq2ps %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x5b,0xc0]1382; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1383  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>1384  %res = sitofp <4 x i32> %arg0 to <4 x float>1385  ret <4 x float> %res1386}1387 1388define <2 x i64> @test_mm_cvtpd_epi32(<2 x double> %a0) nounwind {1389; SSE-LABEL: test_mm_cvtpd_epi32:1390; SSE:       # %bb.0:1391; SSE-NEXT:    cvtpd2dq %xmm0, %xmm0 # encoding: [0xf2,0x0f,0xe6,0xc0]1392; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1393;1394; AVX1-LABEL: test_mm_cvtpd_epi32:1395; AVX1:       # %bb.0:1396; AVX1-NEXT:    vcvtpd2dq %xmm0, %xmm0 # encoding: [0xc5,0xfb,0xe6,0xc0]1397; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1398;1399; AVX512-LABEL: test_mm_cvtpd_epi32:1400; AVX512:       # %bb.0:1401; AVX512-NEXT:    vcvtpd2dq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0xe6,0xc0]1402; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1403  %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0)1404  %bc = bitcast <4 x i32> %res to <2 x i64>1405  ret <2 x i64> %bc1406}1407declare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone1408 1409define <4 x float> @test_mm_cvtpd_ps(<2 x double> %a0) nounwind {1410; SSE-LABEL: test_mm_cvtpd_ps:1411; SSE:       # %bb.0:1412; SSE-NEXT:    cvtpd2ps %xmm0, %xmm0 # encoding: [0x66,0x0f,0x5a,0xc0]1413; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1414;1415; AVX1-LABEL: test_mm_cvtpd_ps:1416; AVX1:       # %bb.0:1417; AVX1-NEXT:    vcvtpd2ps %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x5a,0xc0]1418; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1419;1420; AVX512-LABEL: test_mm_cvtpd_ps:1421; AVX512:       # %bb.0:1422; AVX512-NEXT:    vcvtpd2ps %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x5a,0xc0]1423; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1424  %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0)1425  ret <4 x float> %res1426}1427declare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone1428 1429define <2 x i64> @test_mm_cvtps_epi32(<4 x float> %a0) nounwind {1430; SSE-LABEL: test_mm_cvtps_epi32:1431; SSE:       # %bb.0:1432; SSE-NEXT:    cvtps2dq %xmm0, %xmm0 # encoding: [0x66,0x0f,0x5b,0xc0]1433; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1434;1435; AVX1-LABEL: test_mm_cvtps_epi32:1436; AVX1:       # %bb.0:1437; AVX1-NEXT:    vcvtps2dq %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x5b,0xc0]1438; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1439;1440; AVX512-LABEL: test_mm_cvtps_epi32:1441; AVX512:       # %bb.0:1442; AVX512-NEXT:    vcvtps2dq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x5b,0xc0]1443; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1444  %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0)1445  %bc = bitcast <4 x i32> %res to <2 x i64>1446  ret <2 x i64> %bc1447}1448declare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone1449 1450define <2 x double> @test_mm_cvtps_pd(<4 x float> %a0) nounwind {1451; SSE-LABEL: test_mm_cvtps_pd:1452; SSE:       # %bb.0:1453; SSE-NEXT:    cvtps2pd %xmm0, %xmm0 # encoding: [0x0f,0x5a,0xc0]1454; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1455;1456; AVX1-LABEL: test_mm_cvtps_pd:1457; AVX1:       # %bb.0:1458; AVX1-NEXT:    vcvtps2pd %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x5a,0xc0]1459; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1460;1461; AVX512-LABEL: test_mm_cvtps_pd:1462; AVX512:       # %bb.0:1463; AVX512-NEXT:    vcvtps2pd %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x5a,0xc0]1464; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1465  %ext = shufflevector <4 x float> %a0, <4 x float> %a0, <2 x i32> <i32 0, i32 1>1466  %res = fpext <2 x float> %ext to <2 x double>1467  ret <2 x double> %res1468}1469 1470define double @test_mm_cvtsd_f64(<2 x double> %a0) nounwind {1471; X86-SSE-LABEL: test_mm_cvtsd_f64:1472; X86-SSE:       # %bb.0:1473; X86-SSE-NEXT:    pushl %ebp # encoding: [0x55]1474; X86-SSE-NEXT:    movl %esp, %ebp # encoding: [0x89,0xe5]1475; X86-SSE-NEXT:    andl $-8, %esp # encoding: [0x83,0xe4,0xf8]1476; X86-SSE-NEXT:    subl $8, %esp # encoding: [0x83,0xec,0x08]1477; X86-SSE-NEXT:    movlps %xmm0, (%esp) # encoding: [0x0f,0x13,0x04,0x24]1478; X86-SSE-NEXT:    fldl (%esp) # encoding: [0xdd,0x04,0x24]1479; X86-SSE-NEXT:    movl %ebp, %esp # encoding: [0x89,0xec]1480; X86-SSE-NEXT:    popl %ebp # encoding: [0x5d]1481; X86-SSE-NEXT:    retl # encoding: [0xc3]1482;1483; X86-AVX1-LABEL: test_mm_cvtsd_f64:1484; X86-AVX1:       # %bb.0:1485; X86-AVX1-NEXT:    pushl %ebp # encoding: [0x55]1486; X86-AVX1-NEXT:    movl %esp, %ebp # encoding: [0x89,0xe5]1487; X86-AVX1-NEXT:    andl $-8, %esp # encoding: [0x83,0xe4,0xf8]1488; X86-AVX1-NEXT:    subl $8, %esp # encoding: [0x83,0xec,0x08]1489; X86-AVX1-NEXT:    vmovlps %xmm0, (%esp) # encoding: [0xc5,0xf8,0x13,0x04,0x24]1490; X86-AVX1-NEXT:    fldl (%esp) # encoding: [0xdd,0x04,0x24]1491; X86-AVX1-NEXT:    movl %ebp, %esp # encoding: [0x89,0xec]1492; X86-AVX1-NEXT:    popl %ebp # encoding: [0x5d]1493; X86-AVX1-NEXT:    retl # encoding: [0xc3]1494;1495; X86-AVX512-LABEL: test_mm_cvtsd_f64:1496; X86-AVX512:       # %bb.0:1497; X86-AVX512-NEXT:    pushl %ebp # encoding: [0x55]1498; X86-AVX512-NEXT:    movl %esp, %ebp # encoding: [0x89,0xe5]1499; X86-AVX512-NEXT:    andl $-8, %esp # encoding: [0x83,0xe4,0xf8]1500; X86-AVX512-NEXT:    subl $8, %esp # encoding: [0x83,0xec,0x08]1501; X86-AVX512-NEXT:    vmovlps %xmm0, (%esp) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x13,0x04,0x24]1502; X86-AVX512-NEXT:    fldl (%esp) # encoding: [0xdd,0x04,0x24]1503; X86-AVX512-NEXT:    movl %ebp, %esp # encoding: [0x89,0xec]1504; X86-AVX512-NEXT:    popl %ebp # encoding: [0x5d]1505; X86-AVX512-NEXT:    retl # encoding: [0xc3]1506;1507; X64-LABEL: test_mm_cvtsd_f64:1508; X64:       # %bb.0:1509; X64-NEXT:    retq # encoding: [0xc3]1510;1511; X32-LABEL: test_mm_cvtsd_f64:1512; X32:       # %bb.0:1513; X32-NEXT:    retq # encoding: [0xc3]1514  %res = extractelement <2 x double> %a0, i32 01515  ret double %res1516}1517 1518define i32 @test_mm_cvtsd_si32(<2 x double> %a0) nounwind {1519; SSE-LABEL: test_mm_cvtsd_si32:1520; SSE:       # %bb.0:1521; SSE-NEXT:    cvtsd2si %xmm0, %eax # encoding: [0xf2,0x0f,0x2d,0xc0]1522; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1523;1524; AVX1-LABEL: test_mm_cvtsd_si32:1525; AVX1:       # %bb.0:1526; AVX1-NEXT:    vcvtsd2si %xmm0, %eax # encoding: [0xc5,0xfb,0x2d,0xc0]1527; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1528;1529; AVX512-LABEL: test_mm_cvtsd_si32:1530; AVX512:       # %bb.0:1531; AVX512-NEXT:    vcvtsd2si %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x2d,0xc0]1532; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1533  %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0)1534  ret i32 %res1535}1536declare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone1537 1538define <4 x float> @test_mm_cvtsd_ss(<4 x float> %a0, <2 x double> %a1) {1539; SSE-LABEL: test_mm_cvtsd_ss:1540; SSE:       # %bb.0:1541; SSE-NEXT:    cvtsd2ss %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x5a,0xc1]1542; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1543;1544; AVX1-LABEL: test_mm_cvtsd_ss:1545; AVX1:       # %bb.0:1546; AVX1-NEXT:    vcvtsd2ss %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5a,0xc1]1547; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1548;1549; AVX512-LABEL: test_mm_cvtsd_ss:1550; AVX512:       # %bb.0:1551; AVX512-NEXT:    vcvtsd2ss %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5a,0xc1]1552; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1553  %res = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %a0, <2 x double> %a1)1554  ret <4 x float> %res1555}1556declare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone1557 1558define <4 x float> @test_mm_cvtsd_ss_load(<4 x float> %a0, ptr %p1) {1559; X86-SSE-LABEL: test_mm_cvtsd_ss_load:1560; X86-SSE:       # %bb.0:1561; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]1562; X86-SSE-NEXT:    cvtsd2ss (%eax), %xmm0 # encoding: [0xf2,0x0f,0x5a,0x00]1563; X86-SSE-NEXT:    retl # encoding: [0xc3]1564;1565; X86-AVX1-LABEL: test_mm_cvtsd_ss_load:1566; X86-AVX1:       # %bb.0:1567; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]1568; X86-AVX1-NEXT:    vcvtsd2ss (%eax), %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5a,0x00]1569; X86-AVX1-NEXT:    retl # encoding: [0xc3]1570;1571; X86-AVX512-LABEL: test_mm_cvtsd_ss_load:1572; X86-AVX512:       # %bb.0:1573; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]1574; X86-AVX512-NEXT:    vcvtsd2ss (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5a,0x00]1575; X86-AVX512-NEXT:    retl # encoding: [0xc3]1576;1577; X64-SSE-LABEL: test_mm_cvtsd_ss_load:1578; X64-SSE:       # %bb.0:1579; X64-SSE-NEXT:    cvtsd2ss (%rdi), %xmm0 # encoding: [0xf2,0x0f,0x5a,0x07]1580; X64-SSE-NEXT:    retq # encoding: [0xc3]1581;1582; X64-AVX1-LABEL: test_mm_cvtsd_ss_load:1583; X64-AVX1:       # %bb.0:1584; X64-AVX1-NEXT:    vcvtsd2ss (%rdi), %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5a,0x07]1585; X64-AVX1-NEXT:    retq # encoding: [0xc3]1586;1587; X64-AVX512-LABEL: test_mm_cvtsd_ss_load:1588; X64-AVX512:       # %bb.0:1589; X64-AVX512-NEXT:    vcvtsd2ss (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5a,0x07]1590; X64-AVX512-NEXT:    retq # encoding: [0xc3]1591;1592; X32-SSE-LABEL: test_mm_cvtsd_ss_load:1593; X32-SSE:       # %bb.0:1594; X32-SSE-NEXT:    cvtsd2ss (%edi), %xmm0 # encoding: [0x67,0xf2,0x0f,0x5a,0x07]1595; X32-SSE-NEXT:    retq # encoding: [0xc3]1596;1597; X32-AVX1-LABEL: test_mm_cvtsd_ss_load:1598; X32-AVX1:       # %bb.0:1599; X32-AVX1-NEXT:    vcvtsd2ss (%edi), %xmm0, %xmm0 # encoding: [0x67,0xc5,0xfb,0x5a,0x07]1600; X32-AVX1-NEXT:    retq # encoding: [0xc3]1601;1602; X32-AVX512-LABEL: test_mm_cvtsd_ss_load:1603; X32-AVX512:       # %bb.0:1604; X32-AVX512-NEXT:    vcvtsd2ss (%edi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x5a,0x07]1605; X32-AVX512-NEXT:    retq # encoding: [0xc3]1606  %a1 = load <2 x double>, ptr %p11607  %res = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %a0, <2 x double> %a1)1608  ret <4 x float> %res1609}1610 1611define i32 @test_mm_cvtsi128_si32(<2 x i64> %a0) nounwind {1612; SSE-LABEL: test_mm_cvtsi128_si32:1613; SSE:       # %bb.0:1614; SSE-NEXT:    movd %xmm0, %eax # encoding: [0x66,0x0f,0x7e,0xc0]1615; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1616;1617; AVX1-LABEL: test_mm_cvtsi128_si32:1618; AVX1:       # %bb.0:1619; AVX1-NEXT:    vmovd %xmm0, %eax # encoding: [0xc5,0xf9,0x7e,0xc0]1620; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1621;1622; AVX512-LABEL: test_mm_cvtsi128_si32:1623; AVX512:       # %bb.0:1624; AVX512-NEXT:    vmovd %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc0]1625; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1626  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>1627  %res = extractelement <4 x i32> %arg0, i32 01628  ret i32 %res1629}1630 1631define <2 x double> @test_mm_cvtsi32_sd(<2 x double> %a0, i32 %a1) nounwind {1632; X86-SSE-LABEL: test_mm_cvtsi32_sd:1633; X86-SSE:       # %bb.0:1634; X86-SSE-NEXT:    cvtsi2sdl {{[0-9]+}}(%esp), %xmm0 # encoding: [0xf2,0x0f,0x2a,0x44,0x24,0x04]1635; X86-SSE-NEXT:    retl # encoding: [0xc3]1636;1637; X86-AVX1-LABEL: test_mm_cvtsi32_sd:1638; X86-AVX1:       # %bb.0:1639; X86-AVX1-NEXT:    vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x2a,0x44,0x24,0x04]1640; X86-AVX1-NEXT:    retl # encoding: [0xc3]1641;1642; X86-AVX512-LABEL: test_mm_cvtsi32_sd:1643; X86-AVX512:       # %bb.0:1644; X86-AVX512-NEXT:    vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x2a,0x44,0x24,0x04]1645; X86-AVX512-NEXT:    retl # encoding: [0xc3]1646;1647; X64-SSE-LABEL: test_mm_cvtsi32_sd:1648; X64-SSE:       # %bb.0:1649; X64-SSE-NEXT:    cvtsi2sd %edi, %xmm0 # encoding: [0xf2,0x0f,0x2a,0xc7]1650; X64-SSE-NEXT:    retq # encoding: [0xc3]1651;1652; X64-AVX1-LABEL: test_mm_cvtsi32_sd:1653; X64-AVX1:       # %bb.0:1654; X64-AVX1-NEXT:    vcvtsi2sd %edi, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x2a,0xc7]1655; X64-AVX1-NEXT:    retq # encoding: [0xc3]1656;1657; X64-AVX512-LABEL: test_mm_cvtsi32_sd:1658; X64-AVX512:       # %bb.0:1659; X64-AVX512-NEXT:    vcvtsi2sd %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x2a,0xc7]1660; X64-AVX512-NEXT:    retq # encoding: [0xc3]1661;1662; X32-SSE-LABEL: test_mm_cvtsi32_sd:1663; X32-SSE:       # %bb.0:1664; X32-SSE-NEXT:    cvtsi2sd %edi, %xmm0 # encoding: [0xf2,0x0f,0x2a,0xc7]1665; X32-SSE-NEXT:    retq # encoding: [0xc3]1666;1667; X32-AVX1-LABEL: test_mm_cvtsi32_sd:1668; X32-AVX1:       # %bb.0:1669; X32-AVX1-NEXT:    vcvtsi2sd %edi, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x2a,0xc7]1670; X32-AVX1-NEXT:    retq # encoding: [0xc3]1671;1672; X32-AVX512-LABEL: test_mm_cvtsi32_sd:1673; X32-AVX512:       # %bb.0:1674; X32-AVX512-NEXT:    vcvtsi2sd %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x2a,0xc7]1675; X32-AVX512-NEXT:    retq # encoding: [0xc3]1676  %cvt = sitofp i32 %a1 to double1677  %res = insertelement <2 x double> %a0, double %cvt, i32 01678  ret <2 x double> %res1679}1680 1681define <2 x i64> @test_mm_cvtsi32_si128(i32 %a0) nounwind {1682; X86-SSE-LABEL: test_mm_cvtsi32_si128:1683; X86-SSE:       # %bb.0:1684; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero1685; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x04]1686; X86-SSE-NEXT:    retl # encoding: [0xc3]1687;1688; X86-AVX1-LABEL: test_mm_cvtsi32_si128:1689; X86-AVX1:       # %bb.0:1690; X86-AVX1-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero1691; X86-AVX1-NEXT:    # encoding: [0xc5,0xfa,0x10,0x44,0x24,0x04]1692; X86-AVX1-NEXT:    retl # encoding: [0xc3]1693;1694; X86-AVX512-LABEL: test_mm_cvtsi32_si128:1695; X86-AVX512:       # %bb.0:1696; X86-AVX512-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero1697; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x44,0x24,0x04]1698; X86-AVX512-NEXT:    retl # encoding: [0xc3]1699;1700; X64-SSE-LABEL: test_mm_cvtsi32_si128:1701; X64-SSE:       # %bb.0:1702; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]1703; X64-SSE-NEXT:    retq # encoding: [0xc3]1704;1705; X64-AVX1-LABEL: test_mm_cvtsi32_si128:1706; X64-AVX1:       # %bb.0:1707; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]1708; X64-AVX1-NEXT:    retq # encoding: [0xc3]1709;1710; X64-AVX512-LABEL: test_mm_cvtsi32_si128:1711; X64-AVX512:       # %bb.0:1712; X64-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]1713; X64-AVX512-NEXT:    retq # encoding: [0xc3]1714;1715; X32-SSE-LABEL: test_mm_cvtsi32_si128:1716; X32-SSE:       # %bb.0:1717; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]1718; X32-SSE-NEXT:    retq # encoding: [0xc3]1719;1720; X32-AVX1-LABEL: test_mm_cvtsi32_si128:1721; X32-AVX1:       # %bb.0:1722; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]1723; X32-AVX1-NEXT:    retq # encoding: [0xc3]1724;1725; X32-AVX512-LABEL: test_mm_cvtsi32_si128:1726; X32-AVX512:       # %bb.0:1727; X32-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]1728; X32-AVX512-NEXT:    retq # encoding: [0xc3]1729  %res0 = insertelement <4 x i32> undef, i32 %a0, i32 01730  %res1 = insertelement <4 x i32> %res0, i32 0, i32 11731  %res2 = insertelement <4 x i32> %res1, i32 0, i32 21732  %res3 = insertelement <4 x i32> %res2, i32 0, i32 31733  %res = bitcast <4 x i32> %res3 to <2 x i64>1734  ret <2 x i64> %res1735}1736 1737define <2 x double> @test_mm_cvtss_sd(<2 x double> %a0, <4 x float> %a1) nounwind {1738; SSE-LABEL: test_mm_cvtss_sd:1739; SSE:       # %bb.0:1740; SSE-NEXT:    cvtss2sd %xmm1, %xmm0 # encoding: [0xf3,0x0f,0x5a,0xc1]1741; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1742;1743; AVX1-LABEL: test_mm_cvtss_sd:1744; AVX1:       # %bb.0:1745; AVX1-NEXT:    vcvtss2sd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x5a,0xc1]1746; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1747;1748; AVX512-LABEL: test_mm_cvtss_sd:1749; AVX512:       # %bb.0:1750; AVX512-NEXT:    vcvtss2sd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x5a,0xc1]1751; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1752  %ext = extractelement <4 x float> %a1, i32 01753  %cvt = fpext float %ext to double1754  %res = insertelement <2 x double> %a0, double %cvt, i32 01755  ret <2 x double> %res1756}1757 1758define <2 x i64> @test_mm_cvttpd_epi32(<2 x double> %a0) nounwind {1759; SSE-LABEL: test_mm_cvttpd_epi32:1760; SSE:       # %bb.0:1761; SSE-NEXT:    cvttpd2dq %xmm0, %xmm0 # encoding: [0x66,0x0f,0xe6,0xc0]1762; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1763;1764; AVX1-LABEL: test_mm_cvttpd_epi32:1765; AVX1:       # %bb.0:1766; AVX1-NEXT:    vcvttpd2dq %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe6,0xc0]1767; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1768;1769; AVX512-LABEL: test_mm_cvttpd_epi32:1770; AVX512:       # %bb.0:1771; AVX512-NEXT:    vcvttpd2dq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe6,0xc0]1772; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1773  %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0)1774  %bc = bitcast <4 x i32> %res to <2 x i64>1775  ret <2 x i64> %bc1776}1777declare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone1778 1779define <2 x i64> @test_mm_cvttps_epi32(<4 x float> %a0) nounwind {1780; SSE-LABEL: test_mm_cvttps_epi32:1781; SSE:       # %bb.0:1782; SSE-NEXT:    cvttps2dq %xmm0, %xmm0 # encoding: [0xf3,0x0f,0x5b,0xc0]1783; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1784;1785; AVX1-LABEL: test_mm_cvttps_epi32:1786; AVX1:       # %bb.0:1787; AVX1-NEXT:    vcvttps2dq %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x5b,0xc0]1788; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1789;1790; AVX512-LABEL: test_mm_cvttps_epi32:1791; AVX512:       # %bb.0:1792; AVX512-NEXT:    vcvttps2dq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x5b,0xc0]1793; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1794  %res = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %a0)1795  %bc = bitcast <4 x i32> %res to <2 x i64>1796  ret <2 x i64> %bc1797}1798declare <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float>) nounwind readnone1799 1800define i32 @test_mm_cvttsd_si32(<2 x double> %a0) nounwind {1801; SSE-LABEL: test_mm_cvttsd_si32:1802; SSE:       # %bb.0:1803; SSE-NEXT:    cvttsd2si %xmm0, %eax # encoding: [0xf2,0x0f,0x2c,0xc0]1804; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1805;1806; AVX1-LABEL: test_mm_cvttsd_si32:1807; AVX1:       # %bb.0:1808; AVX1-NEXT:    vcvttsd2si %xmm0, %eax # encoding: [0xc5,0xfb,0x2c,0xc0]1809; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1810;1811; AVX512-LABEL: test_mm_cvttsd_si32:1812; AVX512:       # %bb.0:1813; AVX512-NEXT:    vcvttsd2si %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x2c,0xc0]1814; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1815  %res = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0)1816  ret i32 %res1817}1818declare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone1819 1820define <2 x double> @test_mm_div_pd(<2 x double> %a0, <2 x double> %a1) nounwind {1821; SSE-LABEL: test_mm_div_pd:1822; SSE:       # %bb.0:1823; SSE-NEXT:    divpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x5e,0xc1]1824; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1825;1826; AVX1-LABEL: test_mm_div_pd:1827; AVX1:       # %bb.0:1828; AVX1-NEXT:    vdivpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x5e,0xc1]1829; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1830;1831; AVX512-LABEL: test_mm_div_pd:1832; AVX512:       # %bb.0:1833; AVX512-NEXT:    vdivpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x5e,0xc1]1834; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1835  %res = fdiv <2 x double> %a0, %a11836  ret <2 x double> %res1837}1838 1839define <2 x double> @test_mm_div_sd(<2 x double> %a0, <2 x double> %a1) nounwind {1840; SSE-LABEL: test_mm_div_sd:1841; SSE:       # %bb.0:1842; SSE-NEXT:    divsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x5e,0xc1]1843; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1844;1845; AVX1-LABEL: test_mm_div_sd:1846; AVX1:       # %bb.0:1847; AVX1-NEXT:    vdivsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5e,0xc1]1848; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1849;1850; AVX512-LABEL: test_mm_div_sd:1851; AVX512:       # %bb.0:1852; AVX512-NEXT:    vdivsd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5e,0xc1]1853; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1854  %ext0 = extractelement <2 x double> %a0, i32 01855  %ext1 = extractelement <2 x double> %a1, i32 01856  %fdiv = fdiv double %ext0, %ext11857  %res = insertelement <2 x double> %a0, double %fdiv, i32 01858  ret <2 x double> %res1859}1860 1861define i32 @test_mm_extract_epi16(<2 x i64> %a0) nounwind {1862; SSE-LABEL: test_mm_extract_epi16:1863; SSE:       # %bb.0:1864; SSE-NEXT:    pextrw $1, %xmm0, %eax # encoding: [0x66,0x0f,0xc5,0xc0,0x01]1865; SSE-NEXT:    movzwl %ax, %eax # encoding: [0x0f,0xb7,0xc0]1866; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1867;1868; AVX1-LABEL: test_mm_extract_epi16:1869; AVX1:       # %bb.0:1870; AVX1-NEXT:    vpextrw $1, %xmm0, %eax # encoding: [0xc5,0xf9,0xc5,0xc0,0x01]1871; AVX1-NEXT:    movzwl %ax, %eax # encoding: [0x0f,0xb7,0xc0]1872; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1873;1874; AVX512-LABEL: test_mm_extract_epi16:1875; AVX512:       # %bb.0:1876; AVX512-NEXT:    vpextrw $1, %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc5,0xc0,0x01]1877; AVX512-NEXT:    movzwl %ax, %eax # encoding: [0x0f,0xb7,0xc0]1878; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1879  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>1880  %ext = extractelement <8 x i16> %arg0, i32 11881  %res = zext i16 %ext to i321882  ret i32 %res1883}1884 1885define <2 x i64> @test_mm_insert_epi16(<2 x i64> %a0, i16 %a1) nounwind {1886; X86-SSE-LABEL: test_mm_insert_epi16:1887; X86-SSE:       # %bb.0:1888; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]1889; X86-SSE-NEXT:    pinsrw $1, %eax, %xmm0 # encoding: [0x66,0x0f,0xc4,0xc0,0x01]1890; X86-SSE-NEXT:    retl # encoding: [0xc3]1891;1892; X86-AVX1-LABEL: test_mm_insert_epi16:1893; X86-AVX1:       # %bb.0:1894; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]1895; X86-AVX1-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x01]1896; X86-AVX1-NEXT:    retl # encoding: [0xc3]1897;1898; X86-AVX512-LABEL: test_mm_insert_epi16:1899; X86-AVX512:       # %bb.0:1900; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]1901; X86-AVX512-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x01]1902; X86-AVX512-NEXT:    retl # encoding: [0xc3]1903;1904; X64-SSE-LABEL: test_mm_insert_epi16:1905; X64-SSE:       # %bb.0:1906; X64-SSE-NEXT:    pinsrw $1, %edi, %xmm0 # encoding: [0x66,0x0f,0xc4,0xc7,0x01]1907; X64-SSE-NEXT:    retq # encoding: [0xc3]1908;1909; X64-AVX1-LABEL: test_mm_insert_epi16:1910; X64-AVX1:       # %bb.0:1911; X64-AVX1-NEXT:    vpinsrw $1, %edi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc7,0x01]1912; X64-AVX1-NEXT:    retq # encoding: [0xc3]1913;1914; X64-AVX512-LABEL: test_mm_insert_epi16:1915; X64-AVX512:       # %bb.0:1916; X64-AVX512-NEXT:    vpinsrw $1, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc7,0x01]1917; X64-AVX512-NEXT:    retq # encoding: [0xc3]1918;1919; X32-SSE-LABEL: test_mm_insert_epi16:1920; X32-SSE:       # %bb.0:1921; X32-SSE-NEXT:    pinsrw $1, %edi, %xmm0 # encoding: [0x66,0x0f,0xc4,0xc7,0x01]1922; X32-SSE-NEXT:    retq # encoding: [0xc3]1923;1924; X32-AVX1-LABEL: test_mm_insert_epi16:1925; X32-AVX1:       # %bb.0:1926; X32-AVX1-NEXT:    vpinsrw $1, %edi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc7,0x01]1927; X32-AVX1-NEXT:    retq # encoding: [0xc3]1928;1929; X32-AVX512-LABEL: test_mm_insert_epi16:1930; X32-AVX512:       # %bb.0:1931; X32-AVX512-NEXT:    vpinsrw $1, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc7,0x01]1932; X32-AVX512-NEXT:    retq # encoding: [0xc3]1933  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>1934  %res = insertelement <8 x i16> %arg0, i16 %a1,i32 11935  %bc = bitcast <8 x i16> %res to <2 x i64>1936  ret <2 x i64> %bc1937}1938 1939define void @test_mm_lfence() nounwind {1940; CHECK-LABEL: test_mm_lfence:1941; CHECK:       # %bb.0:1942; CHECK-NEXT:    lfence # encoding: [0x0f,0xae,0xe8]1943; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1944  call void @llvm.x86.sse2.lfence()1945  ret void1946}1947declare void @llvm.x86.sse2.lfence() nounwind readnone1948 1949define <2 x double> @test_mm_load_pd(ptr %a0) nounwind {1950; X86-SSE-LABEL: test_mm_load_pd:1951; X86-SSE:       # %bb.0:1952; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]1953; X86-SSE-NEXT:    movaps (%eax), %xmm0 # encoding: [0x0f,0x28,0x00]1954; X86-SSE-NEXT:    retl # encoding: [0xc3]1955;1956; X86-AVX1-LABEL: test_mm_load_pd:1957; X86-AVX1:       # %bb.0:1958; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]1959; X86-AVX1-NEXT:    vmovaps (%eax), %xmm0 # encoding: [0xc5,0xf8,0x28,0x00]1960; X86-AVX1-NEXT:    retl # encoding: [0xc3]1961;1962; X86-AVX512-LABEL: test_mm_load_pd:1963; X86-AVX512:       # %bb.0:1964; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]1965; X86-AVX512-NEXT:    vmovaps (%eax), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x00]1966; X86-AVX512-NEXT:    retl # encoding: [0xc3]1967;1968; X64-SSE-LABEL: test_mm_load_pd:1969; X64-SSE:       # %bb.0:1970; X64-SSE-NEXT:    movaps (%rdi), %xmm0 # encoding: [0x0f,0x28,0x07]1971; X64-SSE-NEXT:    retq # encoding: [0xc3]1972;1973; X64-AVX1-LABEL: test_mm_load_pd:1974; X64-AVX1:       # %bb.0:1975; X64-AVX1-NEXT:    vmovaps (%rdi), %xmm0 # encoding: [0xc5,0xf8,0x28,0x07]1976; X64-AVX1-NEXT:    retq # encoding: [0xc3]1977;1978; X64-AVX512-LABEL: test_mm_load_pd:1979; X64-AVX512:       # %bb.0:1980; X64-AVX512-NEXT:    vmovaps (%rdi), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x07]1981; X64-AVX512-NEXT:    retq # encoding: [0xc3]1982;1983; X32-SSE-LABEL: test_mm_load_pd:1984; X32-SSE:       # %bb.0:1985; X32-SSE-NEXT:    movaps (%edi), %xmm0 # encoding: [0x67,0x0f,0x28,0x07]1986; X32-SSE-NEXT:    retq # encoding: [0xc3]1987;1988; X32-AVX1-LABEL: test_mm_load_pd:1989; X32-AVX1:       # %bb.0:1990; X32-AVX1-NEXT:    vmovaps (%edi), %xmm0 # encoding: [0x67,0xc5,0xf8,0x28,0x07]1991; X32-AVX1-NEXT:    retq # encoding: [0xc3]1992;1993; X32-AVX512-LABEL: test_mm_load_pd:1994; X32-AVX512:       # %bb.0:1995; X32-AVX512-NEXT:    vmovaps (%edi), %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x28,0x07]1996; X32-AVX512-NEXT:    retq # encoding: [0xc3]1997  %res = load <2 x double>, ptr %a0, align 161998  ret <2 x double> %res1999}2000 2001define <2 x double> @test_mm_load_sd(ptr %a0) nounwind {2002; X86-SSE-LABEL: test_mm_load_sd:2003; X86-SSE:       # %bb.0:2004; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2005; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2006; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x00]2007; X86-SSE-NEXT:    retl # encoding: [0xc3]2008;2009; X86-AVX1-LABEL: test_mm_load_sd:2010; X86-AVX1:       # %bb.0:2011; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2012; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2013; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x00]2014; X86-AVX1-NEXT:    retl # encoding: [0xc3]2015;2016; X86-AVX512-LABEL: test_mm_load_sd:2017; X86-AVX512:       # %bb.0:2018; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2019; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2020; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x00]2021; X86-AVX512-NEXT:    retl # encoding: [0xc3]2022;2023; X64-SSE-LABEL: test_mm_load_sd:2024; X64-SSE:       # %bb.0:2025; X64-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2026; X64-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x07]2027; X64-SSE-NEXT:    retq # encoding: [0xc3]2028;2029; X64-AVX1-LABEL: test_mm_load_sd:2030; X64-AVX1:       # %bb.0:2031; X64-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2032; X64-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x07]2033; X64-AVX1-NEXT:    retq # encoding: [0xc3]2034;2035; X64-AVX512-LABEL: test_mm_load_sd:2036; X64-AVX512:       # %bb.0:2037; X64-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2038; X64-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x07]2039; X64-AVX512-NEXT:    retq # encoding: [0xc3]2040;2041; X32-SSE-LABEL: test_mm_load_sd:2042; X32-SSE:       # %bb.0:2043; X32-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2044; X32-SSE-NEXT:    # encoding: [0x67,0xf2,0x0f,0x10,0x07]2045; X32-SSE-NEXT:    retq # encoding: [0xc3]2046;2047; X32-AVX1-LABEL: test_mm_load_sd:2048; X32-AVX1:       # %bb.0:2049; X32-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2050; X32-AVX1-NEXT:    # encoding: [0x67,0xc5,0xfb,0x10,0x07]2051; X32-AVX1-NEXT:    retq # encoding: [0xc3]2052;2053; X32-AVX512-LABEL: test_mm_load_sd:2054; X32-AVX512:       # %bb.0:2055; X32-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2056; X32-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x10,0x07]2057; X32-AVX512-NEXT:    retq # encoding: [0xc3]2058  %ld = load double, ptr %a0, align 12059  %res0 = insertelement <2 x double> undef, double %ld, i32 02060  %res1 = insertelement <2 x double> %res0, double 0.0, i32 12061  ret <2 x double> %res12062}2063 2064define <2 x i64> @test_mm_load_si128(ptr %a0) nounwind {2065; X86-SSE-LABEL: test_mm_load_si128:2066; X86-SSE:       # %bb.0:2067; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2068; X86-SSE-NEXT:    movaps (%eax), %xmm0 # encoding: [0x0f,0x28,0x00]2069; X86-SSE-NEXT:    retl # encoding: [0xc3]2070;2071; X86-AVX1-LABEL: test_mm_load_si128:2072; X86-AVX1:       # %bb.0:2073; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2074; X86-AVX1-NEXT:    vmovaps (%eax), %xmm0 # encoding: [0xc5,0xf8,0x28,0x00]2075; X86-AVX1-NEXT:    retl # encoding: [0xc3]2076;2077; X86-AVX512-LABEL: test_mm_load_si128:2078; X86-AVX512:       # %bb.0:2079; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2080; X86-AVX512-NEXT:    vmovaps (%eax), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x00]2081; X86-AVX512-NEXT:    retl # encoding: [0xc3]2082;2083; X64-SSE-LABEL: test_mm_load_si128:2084; X64-SSE:       # %bb.0:2085; X64-SSE-NEXT:    movaps (%rdi), %xmm0 # encoding: [0x0f,0x28,0x07]2086; X64-SSE-NEXT:    retq # encoding: [0xc3]2087;2088; X64-AVX1-LABEL: test_mm_load_si128:2089; X64-AVX1:       # %bb.0:2090; X64-AVX1-NEXT:    vmovaps (%rdi), %xmm0 # encoding: [0xc5,0xf8,0x28,0x07]2091; X64-AVX1-NEXT:    retq # encoding: [0xc3]2092;2093; X64-AVX512-LABEL: test_mm_load_si128:2094; X64-AVX512:       # %bb.0:2095; X64-AVX512-NEXT:    vmovaps (%rdi), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x07]2096; X64-AVX512-NEXT:    retq # encoding: [0xc3]2097;2098; X32-SSE-LABEL: test_mm_load_si128:2099; X32-SSE:       # %bb.0:2100; X32-SSE-NEXT:    movaps (%edi), %xmm0 # encoding: [0x67,0x0f,0x28,0x07]2101; X32-SSE-NEXT:    retq # encoding: [0xc3]2102;2103; X32-AVX1-LABEL: test_mm_load_si128:2104; X32-AVX1:       # %bb.0:2105; X32-AVX1-NEXT:    vmovaps (%edi), %xmm0 # encoding: [0x67,0xc5,0xf8,0x28,0x07]2106; X32-AVX1-NEXT:    retq # encoding: [0xc3]2107;2108; X32-AVX512-LABEL: test_mm_load_si128:2109; X32-AVX512:       # %bb.0:2110; X32-AVX512-NEXT:    vmovaps (%edi), %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x28,0x07]2111; X32-AVX512-NEXT:    retq # encoding: [0xc3]2112  %res = load <2 x i64>, ptr %a0, align 162113  ret <2 x i64> %res2114}2115 2116define <2 x double> @test_mm_load1_pd(ptr %a0) nounwind {2117; X86-SSE-LABEL: test_mm_load1_pd:2118; X86-SSE:       # %bb.0:2119; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2120; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2121; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x00]2122; X86-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]2123; X86-SSE-NEXT:    # xmm0 = xmm0[0,0]2124; X86-SSE-NEXT:    retl # encoding: [0xc3]2125;2126; X86-AVX1-LABEL: test_mm_load1_pd:2127; X86-AVX1:       # %bb.0:2128; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2129; X86-AVX1-NEXT:    vmovddup (%eax), %xmm0 # encoding: [0xc5,0xfb,0x12,0x00]2130; X86-AVX1-NEXT:    # xmm0 = mem[0,0]2131; X86-AVX1-NEXT:    retl # encoding: [0xc3]2132;2133; X86-AVX512-LABEL: test_mm_load1_pd:2134; X86-AVX512:       # %bb.0:2135; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2136; X86-AVX512-NEXT:    vmovddup (%eax), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0x00]2137; X86-AVX512-NEXT:    # xmm0 = mem[0,0]2138; X86-AVX512-NEXT:    retl # encoding: [0xc3]2139;2140; X64-SSE-LABEL: test_mm_load1_pd:2141; X64-SSE:       # %bb.0:2142; X64-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2143; X64-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x07]2144; X64-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]2145; X64-SSE-NEXT:    # xmm0 = xmm0[0,0]2146; X64-SSE-NEXT:    retq # encoding: [0xc3]2147;2148; X64-AVX1-LABEL: test_mm_load1_pd:2149; X64-AVX1:       # %bb.0:2150; X64-AVX1-NEXT:    vmovddup (%rdi), %xmm0 # encoding: [0xc5,0xfb,0x12,0x07]2151; X64-AVX1-NEXT:    # xmm0 = mem[0,0]2152; X64-AVX1-NEXT:    retq # encoding: [0xc3]2153;2154; X64-AVX512-LABEL: test_mm_load1_pd:2155; X64-AVX512:       # %bb.0:2156; X64-AVX512-NEXT:    vmovddup (%rdi), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0x07]2157; X64-AVX512-NEXT:    # xmm0 = mem[0,0]2158; X64-AVX512-NEXT:    retq # encoding: [0xc3]2159;2160; X32-SSE-LABEL: test_mm_load1_pd:2161; X32-SSE:       # %bb.0:2162; X32-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2163; X32-SSE-NEXT:    # encoding: [0x67,0xf2,0x0f,0x10,0x07]2164; X32-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]2165; X32-SSE-NEXT:    # xmm0 = xmm0[0,0]2166; X32-SSE-NEXT:    retq # encoding: [0xc3]2167;2168; X32-AVX1-LABEL: test_mm_load1_pd:2169; X32-AVX1:       # %bb.0:2170; X32-AVX1-NEXT:    vmovddup (%edi), %xmm0 # encoding: [0x67,0xc5,0xfb,0x12,0x07]2171; X32-AVX1-NEXT:    # xmm0 = mem[0,0]2172; X32-AVX1-NEXT:    retq # encoding: [0xc3]2173;2174; X32-AVX512-LABEL: test_mm_load1_pd:2175; X32-AVX512:       # %bb.0:2176; X32-AVX512-NEXT:    vmovddup (%edi), %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x12,0x07]2177; X32-AVX512-NEXT:    # xmm0 = mem[0,0]2178; X32-AVX512-NEXT:    retq # encoding: [0xc3]2179  %ld = load double, ptr %a0, align 82180  %res0 = insertelement <2 x double> undef, double %ld, i32 02181  %res1 = insertelement <2 x double> %res0, double %ld, i32 12182  ret <2 x double> %res12183}2184 2185define <2 x double> @test_mm_loadh_pd(<2 x double> %a0, ptr %a1) nounwind {2186; X86-SSE-LABEL: test_mm_loadh_pd:2187; X86-SSE:       # %bb.0:2188; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2189; X86-SSE-NEXT:    movhps (%eax), %xmm0 # encoding: [0x0f,0x16,0x00]2190; X86-SSE-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2191; X86-SSE-NEXT:    retl # encoding: [0xc3]2192;2193; X86-AVX1-LABEL: test_mm_loadh_pd:2194; X86-AVX1:       # %bb.0:2195; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2196; X86-AVX1-NEXT:    vmovhps (%eax), %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0x00]2197; X86-AVX1-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2198; X86-AVX1-NEXT:    retl # encoding: [0xc3]2199;2200; X86-AVX512-LABEL: test_mm_loadh_pd:2201; X86-AVX512:       # %bb.0:2202; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2203; X86-AVX512-NEXT:    vmovhps (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0x00]2204; X86-AVX512-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2205; X86-AVX512-NEXT:    retl # encoding: [0xc3]2206;2207; X64-SSE-LABEL: test_mm_loadh_pd:2208; X64-SSE:       # %bb.0:2209; X64-SSE-NEXT:    movhps (%rdi), %xmm0 # encoding: [0x0f,0x16,0x07]2210; X64-SSE-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2211; X64-SSE-NEXT:    retq # encoding: [0xc3]2212;2213; X64-AVX1-LABEL: test_mm_loadh_pd:2214; X64-AVX1:       # %bb.0:2215; X64-AVX1-NEXT:    vmovhps (%rdi), %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0x07]2216; X64-AVX1-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2217; X64-AVX1-NEXT:    retq # encoding: [0xc3]2218;2219; X64-AVX512-LABEL: test_mm_loadh_pd:2220; X64-AVX512:       # %bb.0:2221; X64-AVX512-NEXT:    vmovhps (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0x07]2222; X64-AVX512-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2223; X64-AVX512-NEXT:    retq # encoding: [0xc3]2224;2225; X32-SSE-LABEL: test_mm_loadh_pd:2226; X32-SSE:       # %bb.0:2227; X32-SSE-NEXT:    movhps (%edi), %xmm0 # encoding: [0x67,0x0f,0x16,0x07]2228; X32-SSE-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2229; X32-SSE-NEXT:    retq # encoding: [0xc3]2230;2231; X32-AVX1-LABEL: test_mm_loadh_pd:2232; X32-AVX1:       # %bb.0:2233; X32-AVX1-NEXT:    vmovhps (%edi), %xmm0, %xmm0 # encoding: [0x67,0xc5,0xf8,0x16,0x07]2234; X32-AVX1-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2235; X32-AVX1-NEXT:    retq # encoding: [0xc3]2236;2237; X32-AVX512-LABEL: test_mm_loadh_pd:2238; X32-AVX512:       # %bb.0:2239; X32-AVX512-NEXT:    vmovhps (%edi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x16,0x07]2240; X32-AVX512-NEXT:    # xmm0 = xmm0[0,1],mem[0,1]2241; X32-AVX512-NEXT:    retq # encoding: [0xc3]2242  %ld = load double, ptr %a1, align 82243  %res = insertelement <2 x double> %a0, double %ld, i32 12244  ret <2 x double> %res2245}2246 2247define <2 x i64> @test_mm_loadl_epi64(<2 x i64> %a0, ptr %a1) nounwind {2248; X86-SSE-LABEL: test_mm_loadl_epi64:2249; X86-SSE:       # %bb.0:2250; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2251; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2252; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x00]2253; X86-SSE-NEXT:    retl # encoding: [0xc3]2254;2255; X86-AVX1-LABEL: test_mm_loadl_epi64:2256; X86-AVX1:       # %bb.0:2257; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2258; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2259; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x00]2260; X86-AVX1-NEXT:    retl # encoding: [0xc3]2261;2262; X86-AVX512-LABEL: test_mm_loadl_epi64:2263; X86-AVX512:       # %bb.0:2264; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2265; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2266; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x00]2267; X86-AVX512-NEXT:    retl # encoding: [0xc3]2268;2269; X64-SSE-LABEL: test_mm_loadl_epi64:2270; X64-SSE:       # %bb.0:2271; X64-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2272; X64-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x07]2273; X64-SSE-NEXT:    retq # encoding: [0xc3]2274;2275; X64-AVX1-LABEL: test_mm_loadl_epi64:2276; X64-AVX1:       # %bb.0:2277; X64-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2278; X64-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x07]2279; X64-AVX1-NEXT:    retq # encoding: [0xc3]2280;2281; X64-AVX512-LABEL: test_mm_loadl_epi64:2282; X64-AVX512:       # %bb.0:2283; X64-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2284; X64-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x07]2285; X64-AVX512-NEXT:    retq # encoding: [0xc3]2286;2287; X32-SSE-LABEL: test_mm_loadl_epi64:2288; X32-SSE:       # %bb.0:2289; X32-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2290; X32-SSE-NEXT:    # encoding: [0x67,0xf2,0x0f,0x10,0x07]2291; X32-SSE-NEXT:    retq # encoding: [0xc3]2292;2293; X32-AVX1-LABEL: test_mm_loadl_epi64:2294; X32-AVX1:       # %bb.0:2295; X32-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2296; X32-AVX1-NEXT:    # encoding: [0x67,0xc5,0xfb,0x10,0x07]2297; X32-AVX1-NEXT:    retq # encoding: [0xc3]2298;2299; X32-AVX512-LABEL: test_mm_loadl_epi64:2300; X32-AVX512:       # %bb.0:2301; X32-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2302; X32-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x10,0x07]2303; X32-AVX512-NEXT:    retq # encoding: [0xc3]2304  %ld = load i64, ptr %a1, align 12305  %res0 = insertelement <2 x i64> undef, i64 %ld, i32 02306  %res1 = insertelement <2 x i64> %res0, i64 0, i32 12307  ret <2 x i64> %res12308}2309 2310define <2 x double> @test_mm_loadl_pd(<2 x double> %a0, ptr %a1) nounwind {2311; X86-SSE-LABEL: test_mm_loadl_pd:2312; X86-SSE:       # %bb.0:2313; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2314; X86-SSE-NEXT:    movlps (%eax), %xmm0 # encoding: [0x0f,0x12,0x00]2315; X86-SSE-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2316; X86-SSE-NEXT:    retl # encoding: [0xc3]2317;2318; X86-AVX1-LABEL: test_mm_loadl_pd:2319; X86-AVX1:       # %bb.0:2320; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2321; X86-AVX1-NEXT:    vmovlps (%eax), %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x12,0x00]2322; X86-AVX1-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2323; X86-AVX1-NEXT:    retl # encoding: [0xc3]2324;2325; X86-AVX512-LABEL: test_mm_loadl_pd:2326; X86-AVX512:       # %bb.0:2327; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2328; X86-AVX512-NEXT:    vmovlps (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x12,0x00]2329; X86-AVX512-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2330; X86-AVX512-NEXT:    retl # encoding: [0xc3]2331;2332; X64-SSE-LABEL: test_mm_loadl_pd:2333; X64-SSE:       # %bb.0:2334; X64-SSE-NEXT:    movlps (%rdi), %xmm0 # encoding: [0x0f,0x12,0x07]2335; X64-SSE-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2336; X64-SSE-NEXT:    retq # encoding: [0xc3]2337;2338; X64-AVX1-LABEL: test_mm_loadl_pd:2339; X64-AVX1:       # %bb.0:2340; X64-AVX1-NEXT:    vmovlps (%rdi), %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x12,0x07]2341; X64-AVX1-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2342; X64-AVX1-NEXT:    retq # encoding: [0xc3]2343;2344; X64-AVX512-LABEL: test_mm_loadl_pd:2345; X64-AVX512:       # %bb.0:2346; X64-AVX512-NEXT:    vmovlps (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x12,0x07]2347; X64-AVX512-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2348; X64-AVX512-NEXT:    retq # encoding: [0xc3]2349;2350; X32-SSE-LABEL: test_mm_loadl_pd:2351; X32-SSE:       # %bb.0:2352; X32-SSE-NEXT:    movlps (%edi), %xmm0 # encoding: [0x67,0x0f,0x12,0x07]2353; X32-SSE-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2354; X32-SSE-NEXT:    retq # encoding: [0xc3]2355;2356; X32-AVX1-LABEL: test_mm_loadl_pd:2357; X32-AVX1:       # %bb.0:2358; X32-AVX1-NEXT:    vmovlps (%edi), %xmm0, %xmm0 # encoding: [0x67,0xc5,0xf8,0x12,0x07]2359; X32-AVX1-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2360; X32-AVX1-NEXT:    retq # encoding: [0xc3]2361;2362; X32-AVX512-LABEL: test_mm_loadl_pd:2363; X32-AVX512:       # %bb.0:2364; X32-AVX512-NEXT:    vmovlps (%edi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x12,0x07]2365; X32-AVX512-NEXT:    # xmm0 = mem[0,1],xmm0[2,3]2366; X32-AVX512-NEXT:    retq # encoding: [0xc3]2367  %ld = load double, ptr %a1, align 82368  %res = insertelement <2 x double> %a0, double %ld, i32 02369  ret <2 x double> %res2370}2371 2372define <2 x double> @test_mm_loadr_pd(ptr %a0) nounwind {2373; X86-SSE-LABEL: test_mm_loadr_pd:2374; X86-SSE:       # %bb.0:2375; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2376; X86-SSE-NEXT:    movaps (%eax), %xmm0 # encoding: [0x0f,0x28,0x00]2377; X86-SSE-NEXT:    shufps $78, %xmm0, %xmm0 # encoding: [0x0f,0xc6,0xc0,0x4e]2378; X86-SSE-NEXT:    # xmm0 = xmm0[2,3,0,1]2379; X86-SSE-NEXT:    retl # encoding: [0xc3]2380;2381; X86-AVX1-LABEL: test_mm_loadr_pd:2382; X86-AVX1:       # %bb.0:2383; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2384; X86-AVX1-NEXT:    vpermilpd $1, (%eax), %xmm0 # encoding: [0xc4,0xe3,0x79,0x05,0x00,0x01]2385; X86-AVX1-NEXT:    # xmm0 = mem[1,0]2386; X86-AVX1-NEXT:    retl # encoding: [0xc3]2387;2388; X86-AVX512-LABEL: test_mm_loadr_pd:2389; X86-AVX512:       # %bb.0:2390; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2391; X86-AVX512-NEXT:    vpermilpd $1, (%eax), %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x05,0x00,0x01]2392; X86-AVX512-NEXT:    # xmm0 = mem[1,0]2393; X86-AVX512-NEXT:    retl # encoding: [0xc3]2394;2395; X64-SSE-LABEL: test_mm_loadr_pd:2396; X64-SSE:       # %bb.0:2397; X64-SSE-NEXT:    movaps (%rdi), %xmm0 # encoding: [0x0f,0x28,0x07]2398; X64-SSE-NEXT:    shufps $78, %xmm0, %xmm0 # encoding: [0x0f,0xc6,0xc0,0x4e]2399; X64-SSE-NEXT:    # xmm0 = xmm0[2,3,0,1]2400; X64-SSE-NEXT:    retq # encoding: [0xc3]2401;2402; X64-AVX1-LABEL: test_mm_loadr_pd:2403; X64-AVX1:       # %bb.0:2404; X64-AVX1-NEXT:    vpermilpd $1, (%rdi), %xmm0 # encoding: [0xc4,0xe3,0x79,0x05,0x07,0x01]2405; X64-AVX1-NEXT:    # xmm0 = mem[1,0]2406; X64-AVX1-NEXT:    retq # encoding: [0xc3]2407;2408; X64-AVX512-LABEL: test_mm_loadr_pd:2409; X64-AVX512:       # %bb.0:2410; X64-AVX512-NEXT:    vpermilpd $1, (%rdi), %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x05,0x07,0x01]2411; X64-AVX512-NEXT:    # xmm0 = mem[1,0]2412; X64-AVX512-NEXT:    retq # encoding: [0xc3]2413;2414; X32-SSE-LABEL: test_mm_loadr_pd:2415; X32-SSE:       # %bb.0:2416; X32-SSE-NEXT:    movaps (%edi), %xmm0 # encoding: [0x67,0x0f,0x28,0x07]2417; X32-SSE-NEXT:    shufps $78, %xmm0, %xmm0 # encoding: [0x0f,0xc6,0xc0,0x4e]2418; X32-SSE-NEXT:    # xmm0 = xmm0[2,3,0,1]2419; X32-SSE-NEXT:    retq # encoding: [0xc3]2420;2421; X32-AVX1-LABEL: test_mm_loadr_pd:2422; X32-AVX1:       # %bb.0:2423; X32-AVX1-NEXT:    vpermilpd $1, (%edi), %xmm0 # encoding: [0x67,0xc4,0xe3,0x79,0x05,0x07,0x01]2424; X32-AVX1-NEXT:    # xmm0 = mem[1,0]2425; X32-AVX1-NEXT:    retq # encoding: [0xc3]2426;2427; X32-AVX512-LABEL: test_mm_loadr_pd:2428; X32-AVX512:       # %bb.0:2429; X32-AVX512-NEXT:    vpermilpd $1, (%edi), %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc4,0xe3,0x79,0x05,0x07,0x01]2430; X32-AVX512-NEXT:    # xmm0 = mem[1,0]2431; X32-AVX512-NEXT:    retq # encoding: [0xc3]2432  %ld = load <2 x double>, ptr %a0, align 162433  %res = shufflevector <2 x double> %ld, <2 x double> undef, <2 x i32> <i32 1, i32 0>2434  ret <2 x double> %res2435}2436 2437define <2 x double> @test_mm_loadu_pd(ptr %a0) nounwind {2438; X86-SSE-LABEL: test_mm_loadu_pd:2439; X86-SSE:       # %bb.0:2440; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2441; X86-SSE-NEXT:    movups (%eax), %xmm0 # encoding: [0x0f,0x10,0x00]2442; X86-SSE-NEXT:    retl # encoding: [0xc3]2443;2444; X86-AVX1-LABEL: test_mm_loadu_pd:2445; X86-AVX1:       # %bb.0:2446; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2447; X86-AVX1-NEXT:    vmovups (%eax), %xmm0 # encoding: [0xc5,0xf8,0x10,0x00]2448; X86-AVX1-NEXT:    retl # encoding: [0xc3]2449;2450; X86-AVX512-LABEL: test_mm_loadu_pd:2451; X86-AVX512:       # %bb.0:2452; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2453; X86-AVX512-NEXT:    vmovups (%eax), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x10,0x00]2454; X86-AVX512-NEXT:    retl # encoding: [0xc3]2455;2456; X64-SSE-LABEL: test_mm_loadu_pd:2457; X64-SSE:       # %bb.0:2458; X64-SSE-NEXT:    movups (%rdi), %xmm0 # encoding: [0x0f,0x10,0x07]2459; X64-SSE-NEXT:    retq # encoding: [0xc3]2460;2461; X64-AVX1-LABEL: test_mm_loadu_pd:2462; X64-AVX1:       # %bb.0:2463; X64-AVX1-NEXT:    vmovups (%rdi), %xmm0 # encoding: [0xc5,0xf8,0x10,0x07]2464; X64-AVX1-NEXT:    retq # encoding: [0xc3]2465;2466; X64-AVX512-LABEL: test_mm_loadu_pd:2467; X64-AVX512:       # %bb.0:2468; X64-AVX512-NEXT:    vmovups (%rdi), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x10,0x07]2469; X64-AVX512-NEXT:    retq # encoding: [0xc3]2470;2471; X32-SSE-LABEL: test_mm_loadu_pd:2472; X32-SSE:       # %bb.0:2473; X32-SSE-NEXT:    movups (%edi), %xmm0 # encoding: [0x67,0x0f,0x10,0x07]2474; X32-SSE-NEXT:    retq # encoding: [0xc3]2475;2476; X32-AVX1-LABEL: test_mm_loadu_pd:2477; X32-AVX1:       # %bb.0:2478; X32-AVX1-NEXT:    vmovups (%edi), %xmm0 # encoding: [0x67,0xc5,0xf8,0x10,0x07]2479; X32-AVX1-NEXT:    retq # encoding: [0xc3]2480;2481; X32-AVX512-LABEL: test_mm_loadu_pd:2482; X32-AVX512:       # %bb.0:2483; X32-AVX512-NEXT:    vmovups (%edi), %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x10,0x07]2484; X32-AVX512-NEXT:    retq # encoding: [0xc3]2485  %res = load <2 x double>, ptr %a0, align 12486  ret <2 x double> %res2487}2488 2489define <2 x i64> @test_mm_loadu_si128(ptr %a0) nounwind {2490; X86-SSE-LABEL: test_mm_loadu_si128:2491; X86-SSE:       # %bb.0:2492; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2493; X86-SSE-NEXT:    movups (%eax), %xmm0 # encoding: [0x0f,0x10,0x00]2494; X86-SSE-NEXT:    retl # encoding: [0xc3]2495;2496; X86-AVX1-LABEL: test_mm_loadu_si128:2497; X86-AVX1:       # %bb.0:2498; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2499; X86-AVX1-NEXT:    vmovups (%eax), %xmm0 # encoding: [0xc5,0xf8,0x10,0x00]2500; X86-AVX1-NEXT:    retl # encoding: [0xc3]2501;2502; X86-AVX512-LABEL: test_mm_loadu_si128:2503; X86-AVX512:       # %bb.0:2504; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2505; X86-AVX512-NEXT:    vmovups (%eax), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x10,0x00]2506; X86-AVX512-NEXT:    retl # encoding: [0xc3]2507;2508; X64-SSE-LABEL: test_mm_loadu_si128:2509; X64-SSE:       # %bb.0:2510; X64-SSE-NEXT:    movups (%rdi), %xmm0 # encoding: [0x0f,0x10,0x07]2511; X64-SSE-NEXT:    retq # encoding: [0xc3]2512;2513; X64-AVX1-LABEL: test_mm_loadu_si128:2514; X64-AVX1:       # %bb.0:2515; X64-AVX1-NEXT:    vmovups (%rdi), %xmm0 # encoding: [0xc5,0xf8,0x10,0x07]2516; X64-AVX1-NEXT:    retq # encoding: [0xc3]2517;2518; X64-AVX512-LABEL: test_mm_loadu_si128:2519; X64-AVX512:       # %bb.0:2520; X64-AVX512-NEXT:    vmovups (%rdi), %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x10,0x07]2521; X64-AVX512-NEXT:    retq # encoding: [0xc3]2522;2523; X32-SSE-LABEL: test_mm_loadu_si128:2524; X32-SSE:       # %bb.0:2525; X32-SSE-NEXT:    movups (%edi), %xmm0 # encoding: [0x67,0x0f,0x10,0x07]2526; X32-SSE-NEXT:    retq # encoding: [0xc3]2527;2528; X32-AVX1-LABEL: test_mm_loadu_si128:2529; X32-AVX1:       # %bb.0:2530; X32-AVX1-NEXT:    vmovups (%edi), %xmm0 # encoding: [0x67,0xc5,0xf8,0x10,0x07]2531; X32-AVX1-NEXT:    retq # encoding: [0xc3]2532;2533; X32-AVX512-LABEL: test_mm_loadu_si128:2534; X32-AVX512:       # %bb.0:2535; X32-AVX512-NEXT:    vmovups (%edi), %xmm0 # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x10,0x07]2536; X32-AVX512-NEXT:    retq # encoding: [0xc3]2537  %res = load <2 x i64>, ptr %a0, align 12538  ret <2 x i64> %res2539}2540 2541define <2 x i64> @test_mm_loadu_si64(ptr nocapture readonly %A) {2542; X86-SSE-LABEL: test_mm_loadu_si64:2543; X86-SSE:       # %bb.0: # %entry2544; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2545; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2546; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x00]2547; X86-SSE-NEXT:    retl # encoding: [0xc3]2548;2549; X86-AVX1-LABEL: test_mm_loadu_si64:2550; X86-AVX1:       # %bb.0: # %entry2551; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2552; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2553; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x00]2554; X86-AVX1-NEXT:    retl # encoding: [0xc3]2555;2556; X86-AVX512-LABEL: test_mm_loadu_si64:2557; X86-AVX512:       # %bb.0: # %entry2558; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2559; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2560; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x00]2561; X86-AVX512-NEXT:    retl # encoding: [0xc3]2562;2563; X64-SSE-LABEL: test_mm_loadu_si64:2564; X64-SSE:       # %bb.0: # %entry2565; X64-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2566; X64-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x07]2567; X64-SSE-NEXT:    retq # encoding: [0xc3]2568;2569; X64-AVX1-LABEL: test_mm_loadu_si64:2570; X64-AVX1:       # %bb.0: # %entry2571; X64-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2572; X64-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x07]2573; X64-AVX1-NEXT:    retq # encoding: [0xc3]2574;2575; X64-AVX512-LABEL: test_mm_loadu_si64:2576; X64-AVX512:       # %bb.0: # %entry2577; X64-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2578; X64-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x07]2579; X64-AVX512-NEXT:    retq # encoding: [0xc3]2580;2581; X32-SSE-LABEL: test_mm_loadu_si64:2582; X32-SSE:       # %bb.0: # %entry2583; X32-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero2584; X32-SSE-NEXT:    # encoding: [0x67,0xf2,0x0f,0x10,0x07]2585; X32-SSE-NEXT:    retq # encoding: [0xc3]2586;2587; X32-AVX1-LABEL: test_mm_loadu_si64:2588; X32-AVX1:       # %bb.0: # %entry2589; X32-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2590; X32-AVX1-NEXT:    # encoding: [0x67,0xc5,0xfb,0x10,0x07]2591; X32-AVX1-NEXT:    retq # encoding: [0xc3]2592;2593; X32-AVX512-LABEL: test_mm_loadu_si64:2594; X32-AVX512:       # %bb.0: # %entry2595; X32-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero2596; X32-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x10,0x07]2597; X32-AVX512-NEXT:    retq # encoding: [0xc3]2598entry:2599  %0 = load i64, ptr %A, align 12600  %vecinit1.i = insertelement <2 x i64> <i64 undef, i64 0>, i64 %0, i32 02601  ret <2 x i64> %vecinit1.i2602}2603 2604define <2 x i64> @test_mm_loadu_si32(ptr nocapture readonly %A) {2605; X86-SSE-LABEL: test_mm_loadu_si32:2606; X86-SSE:       # %bb.0: # %entry2607; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2608; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero2609; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x00]2610; X86-SSE-NEXT:    retl # encoding: [0xc3]2611;2612; X86-AVX1-LABEL: test_mm_loadu_si32:2613; X86-AVX1:       # %bb.0: # %entry2614; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2615; X86-AVX1-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero2616; X86-AVX1-NEXT:    # encoding: [0xc5,0xfa,0x10,0x00]2617; X86-AVX1-NEXT:    retl # encoding: [0xc3]2618;2619; X86-AVX512-LABEL: test_mm_loadu_si32:2620; X86-AVX512:       # %bb.0: # %entry2621; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2622; X86-AVX512-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero2623; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x00]2624; X86-AVX512-NEXT:    retl # encoding: [0xc3]2625;2626; X64-SSE-LABEL: test_mm_loadu_si32:2627; X64-SSE:       # %bb.0: # %entry2628; X64-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero2629; X64-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x07]2630; X64-SSE-NEXT:    retq # encoding: [0xc3]2631;2632; X64-AVX1-LABEL: test_mm_loadu_si32:2633; X64-AVX1:       # %bb.0: # %entry2634; X64-AVX1-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero2635; X64-AVX1-NEXT:    # encoding: [0xc5,0xfa,0x10,0x07]2636; X64-AVX1-NEXT:    retq # encoding: [0xc3]2637;2638; X64-AVX512-LABEL: test_mm_loadu_si32:2639; X64-AVX512:       # %bb.0: # %entry2640; X64-AVX512-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero2641; X64-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x07]2642; X64-AVX512-NEXT:    retq # encoding: [0xc3]2643;2644; X32-SSE-LABEL: test_mm_loadu_si32:2645; X32-SSE:       # %bb.0: # %entry2646; X32-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero2647; X32-SSE-NEXT:    # encoding: [0x67,0xf3,0x0f,0x10,0x07]2648; X32-SSE-NEXT:    retq # encoding: [0xc3]2649;2650; X32-AVX1-LABEL: test_mm_loadu_si32:2651; X32-AVX1:       # %bb.0: # %entry2652; X32-AVX1-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero2653; X32-AVX1-NEXT:    # encoding: [0x67,0xc5,0xfa,0x10,0x07]2654; X32-AVX1-NEXT:    retq # encoding: [0xc3]2655;2656; X32-AVX512-LABEL: test_mm_loadu_si32:2657; X32-AVX512:       # %bb.0: # %entry2658; X32-AVX512-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero2659; X32-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfa,0x10,0x07]2660; X32-AVX512-NEXT:    retq # encoding: [0xc3]2661entry:2662  %0 = load i32, ptr %A, align 12663  %vecinit3.i = insertelement <4 x i32> <i32 undef, i32 0, i32 0, i32 0>, i32 %0, i32 02664  %1 = bitcast <4 x i32> %vecinit3.i to <2 x i64>2665  ret <2 x i64> %12666}2667 2668define <2 x i64> @test_mm_loadu_si16(ptr nocapture readonly %A) {2669; X86-SSE-LABEL: test_mm_loadu_si16:2670; X86-SSE:       # %bb.0: # %entry2671; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2672; X86-SSE-NEXT:    movzwl (%eax), %eax # encoding: [0x0f,0xb7,0x00]2673; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]2674; X86-SSE-NEXT:    retl # encoding: [0xc3]2675;2676; X86-AVX1-LABEL: test_mm_loadu_si16:2677; X86-AVX1:       # %bb.0: # %entry2678; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2679; X86-AVX1-NEXT:    movzwl (%eax), %eax # encoding: [0x0f,0xb7,0x00]2680; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]2681; X86-AVX1-NEXT:    retl # encoding: [0xc3]2682;2683; X86-AVX512-LABEL: test_mm_loadu_si16:2684; X86-AVX512:       # %bb.0: # %entry2685; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]2686; X86-AVX512-NEXT:    movzwl (%eax), %eax # encoding: [0x0f,0xb7,0x00]2687; X86-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]2688; X86-AVX512-NEXT:    retl # encoding: [0xc3]2689;2690; X64-SSE-LABEL: test_mm_loadu_si16:2691; X64-SSE:       # %bb.0: # %entry2692; X64-SSE-NEXT:    movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]2693; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]2694; X64-SSE-NEXT:    retq # encoding: [0xc3]2695;2696; X64-AVX1-LABEL: test_mm_loadu_si16:2697; X64-AVX1:       # %bb.0: # %entry2698; X64-AVX1-NEXT:    movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]2699; X64-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]2700; X64-AVX1-NEXT:    retq # encoding: [0xc3]2701;2702; X64-AVX512-LABEL: test_mm_loadu_si16:2703; X64-AVX512:       # %bb.0: # %entry2704; X64-AVX512-NEXT:    movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]2705; X64-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]2706; X64-AVX512-NEXT:    retq # encoding: [0xc3]2707;2708; X32-SSE-LABEL: test_mm_loadu_si16:2709; X32-SSE:       # %bb.0: # %entry2710; X32-SSE-NEXT:    movzwl (%edi), %eax # encoding: [0x67,0x0f,0xb7,0x07]2711; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]2712; X32-SSE-NEXT:    retq # encoding: [0xc3]2713;2714; X32-AVX1-LABEL: test_mm_loadu_si16:2715; X32-AVX1:       # %bb.0: # %entry2716; X32-AVX1-NEXT:    movzwl (%edi), %eax # encoding: [0x67,0x0f,0xb7,0x07]2717; X32-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]2718; X32-AVX1-NEXT:    retq # encoding: [0xc3]2719;2720; X32-AVX512-LABEL: test_mm_loadu_si16:2721; X32-AVX512:       # %bb.0: # %entry2722; X32-AVX512-NEXT:    movzwl (%edi), %eax # encoding: [0x67,0x0f,0xb7,0x07]2723; X32-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]2724; X32-AVX512-NEXT:    retq # encoding: [0xc3]2725entry:2726  %0 = load i16, ptr %A, align 12727  %vecinit7.i = insertelement <8 x i16> <i16 undef, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, i16 %0, i32 02728  %1 = bitcast <8 x i16> %vecinit7.i to <2 x i64>2729  ret <2 x i64> %12730}2731 2732define <2 x i64> @test_mm_madd_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {2733; SSE-LABEL: test_mm_madd_epi16:2734; SSE:       # %bb.0:2735; SSE-NEXT:    pmaddwd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf5,0xc1]2736; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2737;2738; AVX1-LABEL: test_mm_madd_epi16:2739; AVX1:       # %bb.0:2740; AVX1-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf5,0xc1]2741; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2742;2743; AVX512-LABEL: test_mm_madd_epi16:2744; AVX512:       # %bb.0:2745; AVX512-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf5,0xc1]2746; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2747  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>2748  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>2749  %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %arg0, <8 x i16> %arg1)2750  %bc = bitcast <4 x i32> %res to <2 x i64>2751  ret <2 x i64> %bc2752}2753declare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone2754 2755define void @test_mm_maskmoveu_si128(<2 x i64> %a0, <2 x i64> %a1, ptr %a2) nounwind {2756; X86-SSE-LABEL: test_mm_maskmoveu_si128:2757; X86-SSE:       # %bb.0:2758; X86-SSE-NEXT:    pushl %edi # encoding: [0x57]2759; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %edi # encoding: [0x8b,0x7c,0x24,0x08]2760; X86-SSE-NEXT:    maskmovdqu %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf7,0xc1]2761; X86-SSE-NEXT:    popl %edi # encoding: [0x5f]2762; X86-SSE-NEXT:    retl # encoding: [0xc3]2763;2764; X86-AVX-LABEL: test_mm_maskmoveu_si128:2765; X86-AVX:       # %bb.0:2766; X86-AVX-NEXT:    pushl %edi # encoding: [0x57]2767; X86-AVX-NEXT:    movl {{[0-9]+}}(%esp), %edi # encoding: [0x8b,0x7c,0x24,0x08]2768; X86-AVX-NEXT:    vmaskmovdqu %xmm1, %xmm0 # encoding: [0xc5,0xf9,0xf7,0xc1]2769; X86-AVX-NEXT:    popl %edi # encoding: [0x5f]2770; X86-AVX-NEXT:    retl # encoding: [0xc3]2771;2772; X64-SSE-LABEL: test_mm_maskmoveu_si128:2773; X64-SSE:       # %bb.0:2774; X64-SSE-NEXT:    maskmovdqu %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf7,0xc1]2775; X64-SSE-NEXT:    retq # encoding: [0xc3]2776;2777; X64-AVX-LABEL: test_mm_maskmoveu_si128:2778; X64-AVX:       # %bb.0:2779; X64-AVX-NEXT:    vmaskmovdqu %xmm1, %xmm0 # encoding: [0xc5,0xf9,0xf7,0xc1]2780; X64-AVX-NEXT:    retq # encoding: [0xc3]2781;2782; X32-SSE-LABEL: test_mm_maskmoveu_si128:2783; X32-SSE:       # %bb.0:2784; X32-SSE-NEXT:    # kill: def $edi killed $edi killed $rdi2785; X32-SSE-NEXT:    addr32 maskmovdqu %xmm1, %xmm0 # encoding: [0x67,0x66,0x0f,0xf7,0xc1]2786; X32-SSE-NEXT:    retq # encoding: [0xc3]2787;2788; X32-AVX-LABEL: test_mm_maskmoveu_si128:2789; X32-AVX:       # %bb.0:2790; X32-AVX-NEXT:    # kill: def $edi killed $edi killed $rdi2791; X32-AVX-NEXT:    addr32 vmaskmovdqu %xmm1, %xmm0 # encoding: [0x67,0xc5,0xf9,0xf7,0xc1]2792; X32-AVX-NEXT:    retq # encoding: [0xc3]2793  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>2794  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>2795  call void @llvm.x86.sse2.maskmov.dqu(<16 x i8> %arg0, <16 x i8> %arg1, ptr %a2)2796  ret void2797}2798declare void @llvm.x86.sse2.maskmov.dqu(<16 x i8>, <16 x i8>, ptr) nounwind2799 2800define <2 x i64> @test_mm_max_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {2801; SSE-LABEL: test_mm_max_epi16:2802; SSE:       # %bb.0:2803; SSE-NEXT:    pmaxsw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xee,0xc1]2804; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2805;2806; AVX1-LABEL: test_mm_max_epi16:2807; AVX1:       # %bb.0:2808; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xee,0xc1]2809; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2810;2811; AVX512-LABEL: test_mm_max_epi16:2812; AVX512:       # %bb.0:2813; AVX512-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xee,0xc1]2814; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2815  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>2816  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>2817  %sel = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %arg0, <8 x i16> %arg1)2818  %bc = bitcast <8 x i16> %sel to <2 x i64>2819  ret <2 x i64> %bc2820}2821declare <8 x i16> @llvm.smax.v8i16(<8 x i16>, <8 x i16>)2822 2823define <2 x i64> @test_mm_max_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {2824; SSE-LABEL: test_mm_max_epu8:2825; SSE:       # %bb.0:2826; SSE-NEXT:    pmaxub %xmm1, %xmm0 # encoding: [0x66,0x0f,0xde,0xc1]2827; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2828;2829; AVX1-LABEL: test_mm_max_epu8:2830; AVX1:       # %bb.0:2831; AVX1-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xde,0xc1]2832; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2833;2834; AVX512-LABEL: test_mm_max_epu8:2835; AVX512:       # %bb.0:2836; AVX512-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xde,0xc1]2837; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2838  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>2839  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>2840  %sel = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %arg0, <16 x i8> %arg1)2841  %bc = bitcast <16 x i8> %sel to <2 x i64>2842  ret <2 x i64> %bc2843}2844declare <16 x i8> @llvm.umax.v16i8(<16 x i8>, <16 x i8>)2845 2846define <2 x double> @test_mm_max_pd(<2 x double> %a0, <2 x double> %a1) nounwind {2847; SSE-LABEL: test_mm_max_pd:2848; SSE:       # %bb.0:2849; SSE-NEXT:    maxpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x5f,0xc1]2850; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2851;2852; AVX1-LABEL: test_mm_max_pd:2853; AVX1:       # %bb.0:2854; AVX1-NEXT:    vmaxpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x5f,0xc1]2855; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2856;2857; AVX512-LABEL: test_mm_max_pd:2858; AVX512:       # %bb.0:2859; AVX512-NEXT:    vmaxpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x5f,0xc1]2860; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2861  %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1)2862  ret <2 x double> %res2863}2864declare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone2865 2866define <2 x double> @test_mm_max_sd(<2 x double> %a0, <2 x double> %a1) nounwind {2867; SSE-LABEL: test_mm_max_sd:2868; SSE:       # %bb.0:2869; SSE-NEXT:    maxsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x5f,0xc1]2870; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2871;2872; AVX1-LABEL: test_mm_max_sd:2873; AVX1:       # %bb.0:2874; AVX1-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5f,0xc1]2875; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2876;2877; AVX512-LABEL: test_mm_max_sd:2878; AVX512:       # %bb.0:2879; AVX512-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5f,0xc1]2880; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2881  %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1)2882  ret <2 x double> %res2883}2884declare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone2885 2886define void @test_mm_mfence() nounwind {2887; CHECK-LABEL: test_mm_mfence:2888; CHECK:       # %bb.0:2889; CHECK-NEXT:    mfence # encoding: [0x0f,0xae,0xf0]2890; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2891  call void @llvm.x86.sse2.mfence()2892  ret void2893}2894declare void @llvm.x86.sse2.mfence() nounwind readnone2895 2896define <2 x i64> @test_mm_min_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {2897; SSE-LABEL: test_mm_min_epi16:2898; SSE:       # %bb.0:2899; SSE-NEXT:    pminsw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xea,0xc1]2900; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2901;2902; AVX1-LABEL: test_mm_min_epi16:2903; AVX1:       # %bb.0:2904; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xea,0xc1]2905; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2906;2907; AVX512-LABEL: test_mm_min_epi16:2908; AVX512:       # %bb.0:2909; AVX512-NEXT:    vpminsw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xea,0xc1]2910; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2911  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>2912  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>2913  %sel = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %arg0, <8 x i16> %arg1)2914  %bc = bitcast <8 x i16> %sel to <2 x i64>2915  ret <2 x i64> %bc2916}2917declare <8 x i16> @llvm.smin.v8i16(<8 x i16>, <8 x i16>)2918 2919define <2 x i64> @test_mm_min_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {2920; SSE-LABEL: test_mm_min_epu8:2921; SSE:       # %bb.0:2922; SSE-NEXT:    pminub %xmm1, %xmm0 # encoding: [0x66,0x0f,0xda,0xc1]2923; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2924;2925; AVX1-LABEL: test_mm_min_epu8:2926; AVX1:       # %bb.0:2927; AVX1-NEXT:    vpminub %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xda,0xc1]2928; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2929;2930; AVX512-LABEL: test_mm_min_epu8:2931; AVX512:       # %bb.0:2932; AVX512-NEXT:    vpminub %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xda,0xc1]2933; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2934  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>2935  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>2936  %sel = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %arg0, <16 x i8> %arg1)2937  %bc = bitcast <16 x i8> %sel to <2 x i64>2938  ret <2 x i64> %bc2939}2940declare <16 x i8> @llvm.umin.v16i8(<16 x i8>, <16 x i8>)2941 2942define <2 x double> @test_mm_min_pd(<2 x double> %a0, <2 x double> %a1) nounwind {2943; SSE-LABEL: test_mm_min_pd:2944; SSE:       # %bb.0:2945; SSE-NEXT:    minpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x5d,0xc1]2946; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2947;2948; AVX1-LABEL: test_mm_min_pd:2949; AVX1:       # %bb.0:2950; AVX1-NEXT:    vminpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x5d,0xc1]2951; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2952;2953; AVX512-LABEL: test_mm_min_pd:2954; AVX512:       # %bb.0:2955; AVX512-NEXT:    vminpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x5d,0xc1]2956; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2957  %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1)2958  ret <2 x double> %res2959}2960declare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone2961 2962define <2 x double> @test_mm_min_sd(<2 x double> %a0, <2 x double> %a1) nounwind {2963; SSE-LABEL: test_mm_min_sd:2964; SSE:       # %bb.0:2965; SSE-NEXT:    minsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x5d,0xc1]2966; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2967;2968; AVX1-LABEL: test_mm_min_sd:2969; AVX1:       # %bb.0:2970; AVX1-NEXT:    vminsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5d,0xc1]2971; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2972;2973; AVX512-LABEL: test_mm_min_sd:2974; AVX512:       # %bb.0:2975; AVX512-NEXT:    vminsd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5d,0xc1]2976; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2977  %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1)2978  ret <2 x double> %res2979}2980declare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone2981 2982define <2 x i64> @test_mm_move_epi64(<2 x i64> %a0) nounwind {2983; SSE-LABEL: test_mm_move_epi64:2984; SSE:       # %bb.0:2985; SSE-NEXT:    movq %xmm0, %xmm0 # encoding: [0xf3,0x0f,0x7e,0xc0]2986; SSE-NEXT:    # xmm0 = xmm0[0],zero2987; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2988;2989; AVX1-LABEL: test_mm_move_epi64:2990; AVX1:       # %bb.0:2991; AVX1-NEXT:    vmovq %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x7e,0xc0]2992; AVX1-NEXT:    # xmm0 = xmm0[0],zero2993; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]2994;2995; AVX512-LABEL: test_mm_move_epi64:2996; AVX512:       # %bb.0:2997; AVX512-NEXT:    vmovq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0xc0]2998; AVX512-NEXT:    # xmm0 = xmm0[0],zero2999; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3000  %res = shufflevector <2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i32> <i32 0, i32 2>3001  ret <2 x i64> %res3002}3003 3004define <2 x double> @test_mm_move_sd(<2 x double> %a0, <2 x double> %a1) nounwind {3005; SSE-LABEL: test_mm_move_sd:3006; SSE:       # %bb.0:3007; SSE-NEXT:    movsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x10,0xc1]3008; SSE-NEXT:    # xmm0 = xmm1[0],xmm0[1]3009; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3010;3011; AVX-LABEL: test_mm_move_sd:3012; AVX:       # %bb.0:3013; AVX-NEXT:    vmovsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x10,0xc1]3014; AVX-NEXT:    # xmm0 = xmm1[0],xmm0[1]3015; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3016  %ext0 = extractelement <2 x double> %a1, i32 03017  %res0 = insertelement <2 x double> undef, double %ext0, i32 03018  %ext1 = extractelement <2 x double> %a0, i32 13019  %res1 = insertelement <2 x double> %res0, double %ext1, i32 13020  ret <2 x double> %res13021}3022 3023define i32 @test_mm_movemask_epi8(<2 x i64> %a0) nounwind {3024; SSE-LABEL: test_mm_movemask_epi8:3025; SSE:       # %bb.0:3026; SSE-NEXT:    pmovmskb %xmm0, %eax # encoding: [0x66,0x0f,0xd7,0xc0]3027; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3028;3029; AVX-LABEL: test_mm_movemask_epi8:3030; AVX:       # %bb.0:3031; AVX-NEXT:    vpmovmskb %xmm0, %eax # encoding: [0xc5,0xf9,0xd7,0xc0]3032; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3033  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>3034  %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %arg0)3035  ret i32 %res3036}3037declare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone3038 3039define i32 @test_mm_movemask_pd(<2 x double> %a0) nounwind {3040; SSE-LABEL: test_mm_movemask_pd:3041; SSE:       # %bb.0:3042; SSE-NEXT:    movmskpd %xmm0, %eax # encoding: [0x66,0x0f,0x50,0xc0]3043; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3044;3045; AVX-LABEL: test_mm_movemask_pd:3046; AVX:       # %bb.0:3047; AVX-NEXT:    vmovmskpd %xmm0, %eax # encoding: [0xc5,0xf9,0x50,0xc0]3048; AVX-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3049  %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0)3050  ret i32 %res3051}3052declare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone3053 3054define <2 x i64> @test_mm_mul_epu32(<2 x i64> %a0, <2 x i64> %a1) nounwind {3055; SSE-LABEL: test_mm_mul_epu32:3056; SSE:       # %bb.0:3057; SSE-NEXT:    pmuludq %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf4,0xc1]3058; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3059;3060; AVX1-LABEL: test_mm_mul_epu32:3061; AVX1:       # %bb.0:3062; AVX1-NEXT:    vpmuludq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf4,0xc1]3063; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3064;3065; AVX512-LABEL: test_mm_mul_epu32:3066; AVX512:       # %bb.0:3067; AVX512-NEXT:    vpxor %xmm2, %xmm2, %xmm2 # EVEX TO VEX Compression encoding: [0xc5,0xe9,0xef,0xd2]3068; AVX512-NEXT:    vpblendd $10, %xmm2, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x02,0xc2,0x0a]3069; AVX512-NEXT:    # xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]3070; AVX512-NEXT:    vpblendd $10, %xmm2, %xmm1, %xmm1 # encoding: [0xc4,0xe3,0x71,0x02,0xca,0x0a]3071; AVX512-NEXT:    # xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]3072; AVX512-NEXT:    vpmullq %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0xfd,0x08,0x40,0xc1]3073; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3074  %A = and <2 x i64> %a0, <i64 4294967295, i64 4294967295>3075  %B = and <2 x i64> %a1, <i64 4294967295, i64 4294967295>3076  %res = mul nuw <2 x i64> %A, %B3077  ret <2 x i64> %res3078}3079 3080define <2 x double> @test_mm_mul_pd(<2 x double> %a0, <2 x double> %a1) nounwind {3081; SSE-LABEL: test_mm_mul_pd:3082; SSE:       # %bb.0:3083; SSE-NEXT:    mulpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x59,0xc1]3084; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3085;3086; AVX1-LABEL: test_mm_mul_pd:3087; AVX1:       # %bb.0:3088; AVX1-NEXT:    vmulpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x59,0xc1]3089; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3090;3091; AVX512-LABEL: test_mm_mul_pd:3092; AVX512:       # %bb.0:3093; AVX512-NEXT:    vmulpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x59,0xc1]3094; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3095  %res = fmul <2 x double> %a0, %a13096  ret <2 x double> %res3097}3098 3099define <2 x double> @test_mm_mul_sd(<2 x double> %a0, <2 x double> %a1) nounwind {3100; SSE-LABEL: test_mm_mul_sd:3101; SSE:       # %bb.0:3102; SSE-NEXT:    mulsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x59,0xc1]3103; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3104;3105; AVX1-LABEL: test_mm_mul_sd:3106; AVX1:       # %bb.0:3107; AVX1-NEXT:    vmulsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x59,0xc1]3108; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3109;3110; AVX512-LABEL: test_mm_mul_sd:3111; AVX512:       # %bb.0:3112; AVX512-NEXT:    vmulsd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x59,0xc1]3113; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3114  %ext0 = extractelement <2 x double> %a0, i32 03115  %ext1 = extractelement <2 x double> %a1, i32 03116  %fmul = fmul double %ext0, %ext13117  %res = insertelement <2 x double> %a0, double %fmul, i32 03118  ret <2 x double> %res3119}3120 3121define <2 x i64> @test_mm_mulhi_epi16(<2 x i64> %a0, <2 x i64> %a1) {3122; SSE-LABEL: test_mm_mulhi_epi16:3123; SSE:       # %bb.0:3124; SSE-NEXT:    pmulhw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe5,0xc1]3125; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3126;3127; AVX1-LABEL: test_mm_mulhi_epi16:3128; AVX1:       # %bb.0:3129; AVX1-NEXT:    vpmulhw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe5,0xc1]3130; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3131;3132; AVX512-LABEL: test_mm_mulhi_epi16:3133; AVX512:       # %bb.0:3134; AVX512-NEXT:    vpmulhw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe5,0xc1]3135; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3136  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>3137  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>3138  %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %arg0, <8 x i16> %arg1)3139  %bc = bitcast <8 x i16> %res to <2 x i64>3140  ret <2 x i64> %bc3141}3142declare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone3143 3144define <2 x i64> @test_mm_mulhi_epu16(<2 x i64> %a0, <2 x i64> %a1) {3145; SSE-LABEL: test_mm_mulhi_epu16:3146; SSE:       # %bb.0:3147; SSE-NEXT:    pmulhuw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe4,0xc1]3148; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3149;3150; AVX1-LABEL: test_mm_mulhi_epu16:3151; AVX1:       # %bb.0:3152; AVX1-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe4,0xc1]3153; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3154;3155; AVX512-LABEL: test_mm_mulhi_epu16:3156; AVX512:       # %bb.0:3157; AVX512-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe4,0xc1]3158; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3159  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>3160  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>3161  %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %arg0, <8 x i16> %arg1)3162  %bc = bitcast <8 x i16> %res to <2 x i64>3163  ret <2 x i64> %bc3164}3165declare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone3166 3167define <2 x i64> @test_mm_mullo_epi16(<2 x i64> %a0, <2 x i64> %a1) {3168; SSE-LABEL: test_mm_mullo_epi16:3169; SSE:       # %bb.0:3170; SSE-NEXT:    pmullw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd5,0xc1]3171; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3172;3173; AVX1-LABEL: test_mm_mullo_epi16:3174; AVX1:       # %bb.0:3175; AVX1-NEXT:    vpmullw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd5,0xc1]3176; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3177;3178; AVX512-LABEL: test_mm_mullo_epi16:3179; AVX512:       # %bb.0:3180; AVX512-NEXT:    vpmullw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd5,0xc1]3181; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3182  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>3183  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>3184  %res = mul <8 x i16> %arg0, %arg13185  %bc = bitcast <8 x i16> %res to <2 x i64>3186  ret <2 x i64> %bc3187}3188 3189define <2 x double> @test_mm_or_pd(<2 x double> %a0, <2 x double> %a1) nounwind {3190; SSE-LABEL: test_mm_or_pd:3191; SSE:       # %bb.0:3192; SSE-NEXT:    orps %xmm1, %xmm0 # encoding: [0x0f,0x56,0xc1]3193; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3194;3195; AVX1-LABEL: test_mm_or_pd:3196; AVX1:       # %bb.0:3197; AVX1-NEXT:    vorps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x56,0xc1]3198; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3199;3200; AVX512-LABEL: test_mm_or_pd:3201; AVX512:       # %bb.0:3202; AVX512-NEXT:    vorps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x56,0xc1]3203; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3204  %arg0 = bitcast <2 x double> %a0 to <4 x i32>3205  %arg1 = bitcast <2 x double> %a1 to <4 x i32>3206  %res = or <4 x i32> %arg0, %arg13207  %bc = bitcast <4 x i32> %res to <2 x double>3208  ret <2 x double> %bc3209}3210 3211define <2 x i64> @test_mm_or_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {3212; SSE-LABEL: test_mm_or_si128:3213; SSE:       # %bb.0:3214; SSE-NEXT:    orps %xmm1, %xmm0 # encoding: [0x0f,0x56,0xc1]3215; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3216;3217; AVX1-LABEL: test_mm_or_si128:3218; AVX1:       # %bb.0:3219; AVX1-NEXT:    vorps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x56,0xc1]3220; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3221;3222; AVX512-LABEL: test_mm_or_si128:3223; AVX512:       # %bb.0:3224; AVX512-NEXT:    vorps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x56,0xc1]3225; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3226  %res = or <2 x i64> %a0, %a13227  ret <2 x i64> %res3228}3229 3230define <2 x i64> @test_mm_packs_epi16(<2 x i64> %a0, <2 x i64> %a1) {3231; SSE-LABEL: test_mm_packs_epi16:3232; SSE:       # %bb.0:3233; SSE-NEXT:    packsswb %xmm1, %xmm0 # encoding: [0x66,0x0f,0x63,0xc1]3234; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3235;3236; AVX1-LABEL: test_mm_packs_epi16:3237; AVX1:       # %bb.0:3238; AVX1-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x63,0xc1]3239; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3240;3241; AVX512-LABEL: test_mm_packs_epi16:3242; AVX512:       # %bb.0:3243; AVX512-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x63,0xc1]3244; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3245  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>3246  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>3247  %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %arg0, <8 x i16> %arg1)3248  %bc = bitcast <16 x i8> %res to <2 x i64>3249  ret <2 x i64> %bc3250}3251declare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone3252 3253define <2 x i64> @test_mm_packs_epi32(<2 x i64> %a0, <2 x i64> %a1) {3254; SSE-LABEL: test_mm_packs_epi32:3255; SSE:       # %bb.0:3256; SSE-NEXT:    packssdw %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6b,0xc1]3257; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3258;3259; AVX1-LABEL: test_mm_packs_epi32:3260; AVX1:       # %bb.0:3261; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x6b,0xc1]3262; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3263;3264; AVX512-LABEL: test_mm_packs_epi32:3265; AVX512:       # %bb.0:3266; AVX512-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6b,0xc1]3267; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3268  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>3269  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>3270  %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %arg0, <4 x i32> %arg1)3271  %bc = bitcast <8 x i16> %res to <2 x i64>3272  ret <2 x i64> %bc3273}3274declare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone3275 3276define <2 x i64> @test_mm_packus_epi16(<2 x i64> %a0, <2 x i64> %a1) {3277; SSE-LABEL: test_mm_packus_epi16:3278; SSE:       # %bb.0:3279; SSE-NEXT:    packuswb %xmm1, %xmm0 # encoding: [0x66,0x0f,0x67,0xc1]3280; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3281;3282; AVX1-LABEL: test_mm_packus_epi16:3283; AVX1:       # %bb.0:3284; AVX1-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x67,0xc1]3285; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3286;3287; AVX512-LABEL: test_mm_packus_epi16:3288; AVX512:       # %bb.0:3289; AVX512-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x67,0xc1]3290; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3291  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>3292  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>3293  %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %arg0, <8 x i16> %arg1)3294  %bc = bitcast <16 x i8> %res to <2 x i64>3295  ret <2 x i64> %bc3296}3297declare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone3298 3299define void @test_mm_pause() nounwind {3300; CHECK-LABEL: test_mm_pause:3301; CHECK:       # %bb.0:3302; CHECK-NEXT:    pause # encoding: [0xf3,0x90]3303; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3304  call void @llvm.x86.sse2.pause()3305  ret void3306}3307declare void @llvm.x86.sse2.pause() nounwind readnone3308 3309define <2 x i64> @test_mm_sad_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {3310; SSE-LABEL: test_mm_sad_epu8:3311; SSE:       # %bb.0:3312; SSE-NEXT:    psadbw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf6,0xc1]3313; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3314;3315; AVX1-LABEL: test_mm_sad_epu8:3316; AVX1:       # %bb.0:3317; AVX1-NEXT:    vpsadbw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf6,0xc1]3318; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3319;3320; AVX512-LABEL: test_mm_sad_epu8:3321; AVX512:       # %bb.0:3322; AVX512-NEXT:    vpsadbw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf6,0xc1]3323; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]3324  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>3325  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>3326  %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %arg0, <16 x i8> %arg1)3327  ret <2 x i64> %res3328}3329declare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone3330 3331define <2 x i64> @test_mm_set_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15) nounwind {3332; X86-SSE-LABEL: test_mm_set_epi8:3333; X86-SSE:       # %bb.0:3334; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]3335; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3336; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]3337; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3338; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]3339; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]3340; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x0c]3341; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3342; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]3343; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3344; X86-SSE-NEXT:    punpcklbw %xmm2, %xmm0 # encoding: [0x66,0x0f,0x60,0xc2]3345; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]3346; X86-SSE-NEXT:    punpcklwd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x61,0xc1]3347; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]3348; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x14]3349; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3350; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]3351; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3352; X86-SSE-NEXT:    punpcklbw %xmm1, %xmm2 # encoding: [0x66,0x0f,0x60,0xd1]3353; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]3354; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x1c]3355; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3356; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]3357; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3358; X86-SSE-NEXT:    punpcklbw %xmm3, %xmm1 # encoding: [0x66,0x0f,0x60,0xcb]3359; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]3360; X86-SSE-NEXT:    punpcklwd %xmm2, %xmm1 # encoding: [0x66,0x0f,0x61,0xca]3361; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]3362; X86-SSE-NEXT:    punpckldq %xmm0, %xmm1 # encoding: [0x66,0x0f,0x62,0xc8]3363; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3364; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x24]3365; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3366; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]3367; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3368; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]3369; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]3370; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x2c]3371; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3372; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]3373; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3374; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3375; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3376; X86-SSE-NEXT:    punpcklwd %xmm3, %xmm2 # encoding: [0x66,0x0f,0x61,0xd3]3377; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]3378; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x34]3379; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3380; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]3381; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3382; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]3383; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]3384; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x3c]3385; X86-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]3386; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]3387; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3388; X86-SSE-NEXT:    punpcklbw %xmm4, %xmm0 # encoding: [0x66,0x0f,0x60,0xc4]3389; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]3390; X86-SSE-NEXT:    punpcklwd %xmm3, %xmm0 # encoding: [0x66,0x0f,0x61,0xc3]3391; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]3392; X86-SSE-NEXT:    punpckldq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x62,0xc2]3393; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]3394; X86-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]3395; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]3396; X86-SSE-NEXT:    retl # encoding: [0xc3]3397;3398; X86-AVX1-LABEL: test_mm_set_epi8:3399; X86-AVX1:       # %bb.0:3400; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]3401; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]3402; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x3c]3403; X86-AVX1-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]3404; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]3405; X86-AVX1-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]3406; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x34]3407; X86-AVX1-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]3408; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]3409; X86-AVX1-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]3410; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x2c]3411; X86-AVX1-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]3412; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]3413; X86-AVX1-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]3414; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x24]3415; X86-AVX1-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]3416; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]3417; X86-AVX1-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]3418; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x1c]3419; X86-AVX1-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]3420; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]3421; X86-AVX1-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]3422; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x14]3423; X86-AVX1-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]3424; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]3425; X86-AVX1-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]3426; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x0c]3427; X86-AVX1-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]3428; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]3429; X86-AVX1-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]3430; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]3431; X86-AVX1-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]3432; X86-AVX1-NEXT:    retl # encoding: [0xc3]3433;3434; X86-AVX512-LABEL: test_mm_set_epi8:3435; X86-AVX512:       # %bb.0:3436; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]3437; X86-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]3438; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x3c]3439; X86-AVX512-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]3440; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]3441; X86-AVX512-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]3442; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x34]3443; X86-AVX512-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]3444; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]3445; X86-AVX512-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]3446; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x2c]3447; X86-AVX512-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]3448; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]3449; X86-AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]3450; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x24]3451; X86-AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]3452; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]3453; X86-AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]3454; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x1c]3455; X86-AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]3456; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]3457; X86-AVX512-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]3458; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x14]3459; X86-AVX512-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]3460; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]3461; X86-AVX512-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]3462; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x0c]3463; X86-AVX512-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]3464; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]3465; X86-AVX512-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]3466; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]3467; X86-AVX512-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]3468; X86-AVX512-NEXT:    retl # encoding: [0xc3]3469;3470; X64-SSE-LABEL: test_mm_set_epi8:3471; X64-SSE:       # %bb.0:3472; X64-SSE-NEXT:    movzbl %dil, %eax # encoding: [0x40,0x0f,0xb6,0xc7]3473; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3474; X64-SSE-NEXT:    movzbl %sil, %eax # encoding: [0x40,0x0f,0xb6,0xc6]3475; X64-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3476; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]3477; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]3478; X64-SSE-NEXT:    movzbl %dl, %eax # encoding: [0x0f,0xb6,0xc2]3479; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3480; X64-SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]3481; X64-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3482; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3483; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3484; X64-SSE-NEXT:    punpcklwd %xmm1, %xmm2 # encoding: [0x66,0x0f,0x61,0xd1]3485; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]3486; X64-SSE-NEXT:    movzbl %r8b, %eax # encoding: [0x41,0x0f,0xb6,0xc0]3487; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3488; X64-SSE-NEXT:    movzbl %r9b, %eax # encoding: [0x41,0x0f,0xb6,0xc1]3489; X64-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3490; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]3491; X64-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]3492; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]3493; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3494; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]3495; X64-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3496; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]3497; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]3498; X64-SSE-NEXT:    punpcklwd %xmm3, %xmm1 # encoding: [0x66,0x0f,0x61,0xcb]3499; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]3500; X64-SSE-NEXT:    punpckldq %xmm2, %xmm1 # encoding: [0x66,0x0f,0x62,0xca]3501; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]3502; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]3503; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3504; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]3505; X64-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3506; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3507; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3508; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]3509; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3510; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]3511; X64-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3512; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]3513; X64-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]3514; X64-SSE-NEXT:    punpcklwd %xmm2, %xmm3 # encoding: [0x66,0x0f,0x61,0xda]3515; X64-SSE-NEXT:    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]3516; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]3517; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3518; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]3519; X64-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3520; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3521; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3522; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x48]3523; X64-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]3524; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x50]3525; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3526; X64-SSE-NEXT:    punpcklbw %xmm4, %xmm0 # encoding: [0x66,0x0f,0x60,0xc4]3527; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]3528; X64-SSE-NEXT:    punpcklwd %xmm2, %xmm0 # encoding: [0x66,0x0f,0x61,0xc2]3529; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]3530; X64-SSE-NEXT:    punpckldq %xmm3, %xmm0 # encoding: [0x66,0x0f,0x62,0xc3]3531; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]3532; X64-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]3533; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]3534; X64-SSE-NEXT:    retq # encoding: [0xc3]3535;3536; X64-AVX1-LABEL: test_mm_set_epi8:3537; X64-AVX1:       # %bb.0:3538; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x50]3539; X64-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]3540; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x48]3541; X64-AVX1-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]3542; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]3543; X64-AVX1-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]3544; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]3545; X64-AVX1-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]3546; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]3547; X64-AVX1-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]3548; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]3549; X64-AVX1-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]3550; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]3551; X64-AVX1-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]3552; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]3553; X64-AVX1-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]3554; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]3555; X64-AVX1-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]3556; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]3557; X64-AVX1-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]3558; X64-AVX1-NEXT:    vpinsrb $10, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x0a]3559; X64-AVX1-NEXT:    vpinsrb $11, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x0b]3560; X64-AVX1-NEXT:    vpinsrb $12, %ecx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x0c]3561; X64-AVX1-NEXT:    vpinsrb $13, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x0d]3562; X64-AVX1-NEXT:    vpinsrb $14, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x0e]3563; X64-AVX1-NEXT:    vpinsrb $15, %edi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc7,0x0f]3564; X64-AVX1-NEXT:    retq # encoding: [0xc3]3565;3566; X64-AVX512-LABEL: test_mm_set_epi8:3567; X64-AVX512:       # %bb.0:3568; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x50]3569; X64-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]3570; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x48]3571; X64-AVX512-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]3572; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]3573; X64-AVX512-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]3574; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]3575; X64-AVX512-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]3576; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]3577; X64-AVX512-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]3578; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]3579; X64-AVX512-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]3580; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]3581; X64-AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]3582; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]3583; X64-AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]3584; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]3585; X64-AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]3586; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]3587; X64-AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]3588; X64-AVX512-NEXT:    vpinsrb $10, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x0a]3589; X64-AVX512-NEXT:    vpinsrb $11, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x0b]3590; X64-AVX512-NEXT:    vpinsrb $12, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x0c]3591; X64-AVX512-NEXT:    vpinsrb $13, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x0d]3592; X64-AVX512-NEXT:    vpinsrb $14, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x0e]3593; X64-AVX512-NEXT:    vpinsrb $15, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc7,0x0f]3594; X64-AVX512-NEXT:    retq # encoding: [0xc3]3595;3596; X32-SSE-LABEL: test_mm_set_epi8:3597; X32-SSE:       # %bb.0:3598; X32-SSE-NEXT:    movzbl %dil, %eax # encoding: [0x40,0x0f,0xb6,0xc7]3599; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3600; X32-SSE-NEXT:    movzbl %sil, %eax # encoding: [0x40,0x0f,0xb6,0xc6]3601; X32-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3602; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]3603; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]3604; X32-SSE-NEXT:    movzbl %dl, %eax # encoding: [0x0f,0xb6,0xc2]3605; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3606; X32-SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]3607; X32-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3608; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3609; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3610; X32-SSE-NEXT:    punpcklwd %xmm1, %xmm2 # encoding: [0x66,0x0f,0x61,0xd1]3611; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]3612; X32-SSE-NEXT:    movzbl %r8b, %eax # encoding: [0x41,0x0f,0xb6,0xc0]3613; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3614; X32-SSE-NEXT:    movzbl %r9b, %eax # encoding: [0x41,0x0f,0xb6,0xc1]3615; X32-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3616; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]3617; X32-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]3618; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x08]3619; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3620; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x10]3621; X32-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3622; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]3623; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]3624; X32-SSE-NEXT:    punpcklwd %xmm3, %xmm1 # encoding: [0x66,0x0f,0x61,0xcb]3625; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]3626; X32-SSE-NEXT:    punpckldq %xmm2, %xmm1 # encoding: [0x66,0x0f,0x62,0xca]3627; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]3628; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x18]3629; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3630; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x20]3631; X32-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3632; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3633; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3634; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x28]3635; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3636; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x30]3637; X32-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3638; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]3639; X32-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]3640; X32-SSE-NEXT:    punpcklwd %xmm2, %xmm3 # encoding: [0x66,0x0f,0x61,0xda]3641; X32-SSE-NEXT:    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]3642; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x38]3643; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3644; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x40]3645; X32-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3646; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]3647; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]3648; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x48]3649; X32-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]3650; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x50]3651; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3652; X32-SSE-NEXT:    punpcklbw %xmm4, %xmm0 # encoding: [0x66,0x0f,0x60,0xc4]3653; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]3654; X32-SSE-NEXT:    punpcklwd %xmm2, %xmm0 # encoding: [0x66,0x0f,0x61,0xc2]3655; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]3656; X32-SSE-NEXT:    punpckldq %xmm3, %xmm0 # encoding: [0x66,0x0f,0x62,0xc3]3657; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]3658; X32-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]3659; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]3660; X32-SSE-NEXT:    retq # encoding: [0xc3]3661;3662; X32-AVX1-LABEL: test_mm_set_epi8:3663; X32-AVX1:       # %bb.0:3664; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x50]3665; X32-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]3666; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x48]3667; X32-AVX1-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]3668; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x40]3669; X32-AVX1-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]3670; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x38]3671; X32-AVX1-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]3672; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x30]3673; X32-AVX1-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]3674; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x28]3675; X32-AVX1-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]3676; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x20]3677; X32-AVX1-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]3678; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x18]3679; X32-AVX1-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]3680; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x10]3681; X32-AVX1-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]3682; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x08]3683; X32-AVX1-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]3684; X32-AVX1-NEXT:    vpinsrb $10, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x0a]3685; X32-AVX1-NEXT:    vpinsrb $11, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x0b]3686; X32-AVX1-NEXT:    vpinsrb $12, %ecx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x0c]3687; X32-AVX1-NEXT:    vpinsrb $13, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x0d]3688; X32-AVX1-NEXT:    vpinsrb $14, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x0e]3689; X32-AVX1-NEXT:    vpinsrb $15, %edi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc7,0x0f]3690; X32-AVX1-NEXT:    retq # encoding: [0xc3]3691;3692; X32-AVX512-LABEL: test_mm_set_epi8:3693; X32-AVX512:       # %bb.0:3694; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x50]3695; X32-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]3696; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x48]3697; X32-AVX512-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]3698; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x40]3699; X32-AVX512-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]3700; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x38]3701; X32-AVX512-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]3702; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x30]3703; X32-AVX512-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]3704; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x28]3705; X32-AVX512-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]3706; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x20]3707; X32-AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]3708; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x18]3709; X32-AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]3710; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x10]3711; X32-AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]3712; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x08]3713; X32-AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]3714; X32-AVX512-NEXT:    vpinsrb $10, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x0a]3715; X32-AVX512-NEXT:    vpinsrb $11, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x0b]3716; X32-AVX512-NEXT:    vpinsrb $12, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x0c]3717; X32-AVX512-NEXT:    vpinsrb $13, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x0d]3718; X32-AVX512-NEXT:    vpinsrb $14, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x0e]3719; X32-AVX512-NEXT:    vpinsrb $15, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc7,0x0f]3720; X32-AVX512-NEXT:    retq # encoding: [0xc3]3721  %res0  = insertelement <16 x i8> undef,  i8 %a15, i32 03722  %res1  = insertelement <16 x i8> %res0,  i8 %a14, i32 13723  %res2  = insertelement <16 x i8> %res1,  i8 %a13, i32 23724  %res3  = insertelement <16 x i8> %res2,  i8 %a12, i32 33725  %res4  = insertelement <16 x i8> %res3,  i8 %a11, i32 43726  %res5  = insertelement <16 x i8> %res4,  i8 %a10, i32 53727  %res6  = insertelement <16 x i8> %res5,  i8 %a9 , i32 63728  %res7  = insertelement <16 x i8> %res6,  i8 %a8 , i32 73729  %res8  = insertelement <16 x i8> %res7,  i8 %a7 , i32 83730  %res9  = insertelement <16 x i8> %res8,  i8 %a6 , i32 93731  %res10 = insertelement <16 x i8> %res9,  i8 %a5 , i32 103732  %res11 = insertelement <16 x i8> %res10, i8 %a4 , i32 113733  %res12 = insertelement <16 x i8> %res11, i8 %a3 , i32 123734  %res13 = insertelement <16 x i8> %res12, i8 %a2 , i32 133735  %res14 = insertelement <16 x i8> %res13, i8 %a1 , i32 143736  %res15 = insertelement <16 x i8> %res14, i8 %a0 , i32 153737  %res = bitcast <16 x i8> %res15 to <2 x i64>3738  ret <2 x i64> %res3739}3740 3741define <2 x i64> @test_mm_set_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7) nounwind {3742; X86-SSE-LABEL: test_mm_set_epi16:3743; X86-SSE:       # %bb.0:3744; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]3745; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]3746; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x08]3747; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]3748; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x0c]3749; X86-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]3750; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]3751; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]3752; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x14]3753; X86-SSE-NEXT:    movd %eax, %xmm5 # encoding: [0x66,0x0f,0x6e,0xe8]3754; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x18]3755; X86-SSE-NEXT:    movd %eax, %xmm6 # encoding: [0x66,0x0f,0x6e,0xf0]3756; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x1c]3757; X86-SSE-NEXT:    movd %eax, %xmm7 # encoding: [0x66,0x0f,0x6e,0xf8]3758; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x20]3759; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3760; X86-SSE-NEXT:    punpcklwd %xmm1, %xmm2 # encoding: [0x66,0x0f,0x61,0xd1]3761; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]3762; X86-SSE-NEXT:    punpcklwd %xmm4, %xmm3 # encoding: [0x66,0x0f,0x61,0xdc]3763; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]3764; X86-SSE-NEXT:    punpckldq %xmm2, %xmm3 # encoding: [0x66,0x0f,0x62,0xda]3765; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]3766; X86-SSE-NEXT:    punpcklwd %xmm5, %xmm6 # encoding: [0x66,0x0f,0x61,0xf5]3767; X86-SSE-NEXT:    # xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3]3768; X86-SSE-NEXT:    punpcklwd %xmm7, %xmm0 # encoding: [0x66,0x0f,0x61,0xc7]3769; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]3770; X86-SSE-NEXT:    punpckldq %xmm6, %xmm0 # encoding: [0x66,0x0f,0x62,0xc6]3771; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]3772; X86-SSE-NEXT:    punpcklqdq %xmm3, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc3]3773; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0]3774; X86-SSE-NEXT:    retl # encoding: [0xc3]3775;3776; X86-AVX1-LABEL: test_mm_set_epi16:3777; X86-AVX1:       # %bb.0:3778; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x20]3779; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]3780; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x1c]3781; X86-AVX1-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x01]3782; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x18]3783; X86-AVX1-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x02]3784; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x14]3785; X86-AVX1-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x03]3786; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]3787; X86-AVX1-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x04]3788; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x0c]3789; X86-AVX1-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x05]3790; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x08]3791; X86-AVX1-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x06]3792; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]3793; X86-AVX1-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x07]3794; X86-AVX1-NEXT:    retl # encoding: [0xc3]3795;3796; X86-AVX512-LABEL: test_mm_set_epi16:3797; X86-AVX512:       # %bb.0:3798; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x20]3799; X86-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]3800; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x1c]3801; X86-AVX512-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x01]3802; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x18]3803; X86-AVX512-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x02]3804; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x14]3805; X86-AVX512-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x03]3806; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]3807; X86-AVX512-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x04]3808; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x0c]3809; X86-AVX512-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x05]3810; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x08]3811; X86-AVX512-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x06]3812; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]3813; X86-AVX512-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x07]3814; X86-AVX512-NEXT:    retl # encoding: [0xc3]3815;3816; X64-SSE-LABEL: test_mm_set_epi16:3817; X64-SSE:       # %bb.0:3818; X64-SSE-NEXT:    movzwl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]3819; X64-SSE-NEXT:    movzwl {{[0-9]+}}(%rsp), %r10d # encoding: [0x44,0x0f,0xb7,0x54,0x24,0x08]3820; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]3821; X64-SSE-NEXT:    movd %esi, %xmm1 # encoding: [0x66,0x0f,0x6e,0xce]3822; X64-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]3823; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]3824; X64-SSE-NEXT:    movd %edx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc2]3825; X64-SSE-NEXT:    movd %ecx, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd1]3826; X64-SSE-NEXT:    punpcklwd %xmm0, %xmm2 # encoding: [0x66,0x0f,0x61,0xd0]3827; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]3828; X64-SSE-NEXT:    punpckldq %xmm1, %xmm2 # encoding: [0x66,0x0f,0x62,0xd1]3829; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]3830; X64-SSE-NEXT:    movd %r8d, %xmm0 # encoding: [0x66,0x41,0x0f,0x6e,0xc0]3831; X64-SSE-NEXT:    movd %r9d, %xmm1 # encoding: [0x66,0x41,0x0f,0x6e,0xc9]3832; X64-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]3833; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]3834; X64-SSE-NEXT:    movd %r10d, %xmm3 # encoding: [0x66,0x41,0x0f,0x6e,0xda]3835; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3836; X64-SSE-NEXT:    punpcklwd %xmm3, %xmm0 # encoding: [0x66,0x0f,0x61,0xc3]3837; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]3838; X64-SSE-NEXT:    punpckldq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x62,0xc1]3839; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]3840; X64-SSE-NEXT:    punpcklqdq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc2]3841; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0]3842; X64-SSE-NEXT:    retq # encoding: [0xc3]3843;3844; X64-AVX1-LABEL: test_mm_set_epi16:3845; X64-AVX1:       # %bb.0:3846; X64-AVX1-NEXT:    movzwl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]3847; X64-AVX1-NEXT:    movzwl {{[0-9]+}}(%rsp), %r10d # encoding: [0x44,0x0f,0xb7,0x54,0x24,0x08]3848; X64-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]3849; X64-AVX1-NEXT:    vpinsrw $1, %r10d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x01]3850; X64-AVX1-NEXT:    vpinsrw $2, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x02]3851; X64-AVX1-NEXT:    vpinsrw $3, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x03]3852; X64-AVX1-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc1,0x04]3853; X64-AVX1-NEXT:    vpinsrw $5, %edx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc2,0x05]3854; X64-AVX1-NEXT:    vpinsrw $6, %esi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc6,0x06]3855; X64-AVX1-NEXT:    vpinsrw $7, %edi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc7,0x07]3856; X64-AVX1-NEXT:    retq # encoding: [0xc3]3857;3858; X64-AVX512-LABEL: test_mm_set_epi16:3859; X64-AVX512:       # %bb.0:3860; X64-AVX512-NEXT:    movzwl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]3861; X64-AVX512-NEXT:    movzwl {{[0-9]+}}(%rsp), %r10d # encoding: [0x44,0x0f,0xb7,0x54,0x24,0x08]3862; X64-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]3863; X64-AVX512-NEXT:    vpinsrw $1, %r10d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x01]3864; X64-AVX512-NEXT:    vpinsrw $2, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x02]3865; X64-AVX512-NEXT:    vpinsrw $3, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x03]3866; X64-AVX512-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc1,0x04]3867; X64-AVX512-NEXT:    vpinsrw $5, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc2,0x05]3868; X64-AVX512-NEXT:    vpinsrw $6, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc6,0x06]3869; X64-AVX512-NEXT:    vpinsrw $7, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc7,0x07]3870; X64-AVX512-NEXT:    retq # encoding: [0xc3]3871;3872; X32-SSE-LABEL: test_mm_set_epi16:3873; X32-SSE:       # %bb.0:3874; X32-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb7,0x44,0x24,0x10]3875; X32-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %r10d # encoding: [0x67,0x44,0x0f,0xb7,0x54,0x24,0x08]3876; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]3877; X32-SSE-NEXT:    movd %esi, %xmm1 # encoding: [0x66,0x0f,0x6e,0xce]3878; X32-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]3879; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]3880; X32-SSE-NEXT:    movd %edx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc2]3881; X32-SSE-NEXT:    movd %ecx, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd1]3882; X32-SSE-NEXT:    punpcklwd %xmm0, %xmm2 # encoding: [0x66,0x0f,0x61,0xd0]3883; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]3884; X32-SSE-NEXT:    punpckldq %xmm1, %xmm2 # encoding: [0x66,0x0f,0x62,0xd1]3885; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]3886; X32-SSE-NEXT:    movd %r8d, %xmm0 # encoding: [0x66,0x41,0x0f,0x6e,0xc0]3887; X32-SSE-NEXT:    movd %r9d, %xmm1 # encoding: [0x66,0x41,0x0f,0x6e,0xc9]3888; X32-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]3889; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]3890; X32-SSE-NEXT:    movd %r10d, %xmm3 # encoding: [0x66,0x41,0x0f,0x6e,0xda]3891; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]3892; X32-SSE-NEXT:    punpcklwd %xmm3, %xmm0 # encoding: [0x66,0x0f,0x61,0xc3]3893; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]3894; X32-SSE-NEXT:    punpckldq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x62,0xc1]3895; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]3896; X32-SSE-NEXT:    punpcklqdq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc2]3897; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0]3898; X32-SSE-NEXT:    retq # encoding: [0xc3]3899;3900; X32-AVX1-LABEL: test_mm_set_epi16:3901; X32-AVX1:       # %bb.0:3902; X32-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb7,0x44,0x24,0x10]3903; X32-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %r10d # encoding: [0x67,0x44,0x0f,0xb7,0x54,0x24,0x08]3904; X32-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]3905; X32-AVX1-NEXT:    vpinsrw $1, %r10d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x01]3906; X32-AVX1-NEXT:    vpinsrw $2, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x02]3907; X32-AVX1-NEXT:    vpinsrw $3, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x03]3908; X32-AVX1-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc1,0x04]3909; X32-AVX1-NEXT:    vpinsrw $5, %edx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc2,0x05]3910; X32-AVX1-NEXT:    vpinsrw $6, %esi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc6,0x06]3911; X32-AVX1-NEXT:    vpinsrw $7, %edi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc7,0x07]3912; X32-AVX1-NEXT:    retq # encoding: [0xc3]3913;3914; X32-AVX512-LABEL: test_mm_set_epi16:3915; X32-AVX512:       # %bb.0:3916; X32-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb7,0x44,0x24,0x10]3917; X32-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %r10d # encoding: [0x67,0x44,0x0f,0xb7,0x54,0x24,0x08]3918; X32-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]3919; X32-AVX512-NEXT:    vpinsrw $1, %r10d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x01]3920; X32-AVX512-NEXT:    vpinsrw $2, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x02]3921; X32-AVX512-NEXT:    vpinsrw $3, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x03]3922; X32-AVX512-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc1,0x04]3923; X32-AVX512-NEXT:    vpinsrw $5, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc2,0x05]3924; X32-AVX512-NEXT:    vpinsrw $6, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc6,0x06]3925; X32-AVX512-NEXT:    vpinsrw $7, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc7,0x07]3926; X32-AVX512-NEXT:    retq # encoding: [0xc3]3927  %res0  = insertelement <8 x i16> undef, i16 %a7, i32 03928  %res1  = insertelement <8 x i16> %res0, i16 %a6, i32 13929  %res2  = insertelement <8 x i16> %res1, i16 %a5, i32 23930  %res3  = insertelement <8 x i16> %res2, i16 %a4, i32 33931  %res4  = insertelement <8 x i16> %res3, i16 %a3, i32 43932  %res5  = insertelement <8 x i16> %res4, i16 %a2, i32 53933  %res6  = insertelement <8 x i16> %res5, i16 %a1, i32 63934  %res7  = insertelement <8 x i16> %res6, i16 %a0, i32 73935  %res = bitcast <8 x i16> %res7 to <2 x i64>3936  ret <2 x i64> %res3937}3938 3939define <2 x i64> @test_mm_set_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3) nounwind {3940; X86-SSE-LABEL: test_mm_set_epi32:3941; X86-SSE:       # %bb.0:3942; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero3943; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x04]3944; X86-SSE-NEXT:    movss {{.*#+}} xmm1 = mem[0],zero,zero,zero3945; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x4c,0x24,0x08]3946; X86-SSE-NEXT:    unpcklps %xmm0, %xmm1 # encoding: [0x0f,0x14,0xc8]3947; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3948; X86-SSE-NEXT:    movss {{.*#+}} xmm2 = mem[0],zero,zero,zero3949; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x54,0x24,0x0c]3950; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero3951; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x10]3952; X86-SSE-NEXT:    unpcklps %xmm2, %xmm0 # encoding: [0x0f,0x14,0xc2]3953; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]3954; X86-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]3955; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]3956; X86-SSE-NEXT:    retl # encoding: [0xc3]3957;3958; X86-AVX1-LABEL: test_mm_set_epi32:3959; X86-AVX1:       # %bb.0:3960; X86-AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero3961; X86-AVX1-NEXT:    # encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x10]3962; X86-AVX1-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x0c,0x01]3963; X86-AVX1-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x02]3964; X86-AVX1-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x04,0x03]3965; X86-AVX1-NEXT:    retl # encoding: [0xc3]3966;3967; X86-AVX512-LABEL: test_mm_set_epi32:3968; X86-AVX512:       # %bb.0:3969; X86-AVX512-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero3970; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x10]3971; X86-AVX512-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x0c,0x01]3972; X86-AVX512-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x02]3973; X86-AVX512-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x04,0x03]3974; X86-AVX512-NEXT:    retl # encoding: [0xc3]3975;3976; X64-SSE-LABEL: test_mm_set_epi32:3977; X64-SSE:       # %bb.0:3978; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]3979; X64-SSE-NEXT:    movd %esi, %xmm1 # encoding: [0x66,0x0f,0x6e,0xce]3980; X64-SSE-NEXT:    punpckldq %xmm0, %xmm1 # encoding: [0x66,0x0f,0x62,0xc8]3981; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3982; X64-SSE-NEXT:    movd %edx, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd2]3983; X64-SSE-NEXT:    movd %ecx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc1]3984; X64-SSE-NEXT:    punpckldq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x62,0xc2]3985; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]3986; X64-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]3987; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]3988; X64-SSE-NEXT:    retq # encoding: [0xc3]3989;3990; X64-AVX1-LABEL: test_mm_set_epi32:3991; X64-AVX1:       # %bb.0:3992; X64-AVX1-NEXT:    vmovd %ecx, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc1]3993; X64-AVX1-NEXT:    vpinsrd $1, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x01]3994; X64-AVX1-NEXT:    vpinsrd $2, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x02]3995; X64-AVX1-NEXT:    vpinsrd $3, %edi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc7,0x03]3996; X64-AVX1-NEXT:    retq # encoding: [0xc3]3997;3998; X64-AVX512-LABEL: test_mm_set_epi32:3999; X64-AVX512:       # %bb.0:4000; X64-AVX512-NEXT:    vmovd %ecx, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc1]4001; X64-AVX512-NEXT:    vpinsrd $1, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x01]4002; X64-AVX512-NEXT:    vpinsrd $2, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x02]4003; X64-AVX512-NEXT:    vpinsrd $3, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc7,0x03]4004; X64-AVX512-NEXT:    retq # encoding: [0xc3]4005;4006; X32-SSE-LABEL: test_mm_set_epi32:4007; X32-SSE:       # %bb.0:4008; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]4009; X32-SSE-NEXT:    movd %esi, %xmm1 # encoding: [0x66,0x0f,0x6e,0xce]4010; X32-SSE-NEXT:    punpckldq %xmm0, %xmm1 # encoding: [0x66,0x0f,0x62,0xc8]4011; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4012; X32-SSE-NEXT:    movd %edx, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd2]4013; X32-SSE-NEXT:    movd %ecx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc1]4014; X32-SSE-NEXT:    punpckldq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x62,0xc2]4015; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]4016; X32-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]4017; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4018; X32-SSE-NEXT:    retq # encoding: [0xc3]4019;4020; X32-AVX1-LABEL: test_mm_set_epi32:4021; X32-AVX1:       # %bb.0:4022; X32-AVX1-NEXT:    vmovd %ecx, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc1]4023; X32-AVX1-NEXT:    vpinsrd $1, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x01]4024; X32-AVX1-NEXT:    vpinsrd $2, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x02]4025; X32-AVX1-NEXT:    vpinsrd $3, %edi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc7,0x03]4026; X32-AVX1-NEXT:    retq # encoding: [0xc3]4027;4028; X32-AVX512-LABEL: test_mm_set_epi32:4029; X32-AVX512:       # %bb.0:4030; X32-AVX512-NEXT:    vmovd %ecx, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc1]4031; X32-AVX512-NEXT:    vpinsrd $1, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x01]4032; X32-AVX512-NEXT:    vpinsrd $2, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x02]4033; X32-AVX512-NEXT:    vpinsrd $3, %edi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc7,0x03]4034; X32-AVX512-NEXT:    retq # encoding: [0xc3]4035  %res0  = insertelement <4 x i32> undef, i32 %a3, i32 04036  %res1  = insertelement <4 x i32> %res0, i32 %a2, i32 14037  %res2  = insertelement <4 x i32> %res1, i32 %a1, i32 24038  %res3  = insertelement <4 x i32> %res2, i32 %a0, i32 34039  %res = bitcast <4 x i32> %res3 to <2 x i64>4040  ret <2 x i64> %res4041}4042 4043; TODO test_mm_set_epi644044 4045define <2 x i64> @test_mm_set_epi64x(i64 %a0, i64 %a1) nounwind {4046; X86-SSE-LABEL: test_mm_set_epi64x:4047; X86-SSE:       # %bb.0:4048; X86-SSE-NEXT:    movss {{.*#+}} xmm1 = mem[0],zero,zero,zero4049; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x4c,0x24,0x04]4050; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero4051; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x08]4052; X86-SSE-NEXT:    unpcklps %xmm0, %xmm1 # encoding: [0x0f,0x14,0xc8]4053; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4054; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero4055; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x0c]4056; X86-SSE-NEXT:    movss {{.*#+}} xmm2 = mem[0],zero,zero,zero4057; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x54,0x24,0x10]4058; X86-SSE-NEXT:    unpcklps %xmm2, %xmm0 # encoding: [0x0f,0x14,0xc2]4059; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]4060; X86-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]4061; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4062; X86-SSE-NEXT:    retl # encoding: [0xc3]4063;4064; X86-AVX1-LABEL: test_mm_set_epi64x:4065; X86-AVX1:       # %bb.0:4066; X86-AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero4067; X86-AVX1-NEXT:    # encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x0c]4068; X86-AVX1-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x10,0x01]4069; X86-AVX1-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x04,0x02]4070; X86-AVX1-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x03]4071; X86-AVX1-NEXT:    retl # encoding: [0xc3]4072;4073; X86-AVX512-LABEL: test_mm_set_epi64x:4074; X86-AVX512:       # %bb.0:4075; X86-AVX512-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero4076; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x0c]4077; X86-AVX512-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x10,0x01]4078; X86-AVX512-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x04,0x02]4079; X86-AVX512-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x03]4080; X86-AVX512-NEXT:    retl # encoding: [0xc3]4081;4082; X64-SSE-LABEL: test_mm_set_epi64x:4083; X64-SSE:       # %bb.0:4084; X64-SSE-NEXT:    movq %rdi, %xmm1 # encoding: [0x66,0x48,0x0f,0x6e,0xcf]4085; X64-SSE-NEXT:    movq %rsi, %xmm0 # encoding: [0x66,0x48,0x0f,0x6e,0xc6]4086; X64-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]4087; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4088; X64-SSE-NEXT:    retq # encoding: [0xc3]4089;4090; X64-AVX1-LABEL: test_mm_set_epi64x:4091; X64-AVX1:       # %bb.0:4092; X64-AVX1-NEXT:    vmovq %rdi, %xmm0 # encoding: [0xc4,0xe1,0xf9,0x6e,0xc7]4093; X64-AVX1-NEXT:    vmovq %rsi, %xmm1 # encoding: [0xc4,0xe1,0xf9,0x6e,0xce]4094; X64-AVX1-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x6c,0xc0]4095; X64-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]4096; X64-AVX1-NEXT:    retq # encoding: [0xc3]4097;4098; X64-AVX512-LABEL: test_mm_set_epi64x:4099; X64-AVX512:       # %bb.0:4100; X64-AVX512-NEXT:    vmovq %rdi, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xc7]4101; X64-AVX512-NEXT:    vmovq %rsi, %xmm1 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xce]4102; X64-AVX512-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf1,0x6c,0xc0]4103; X64-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]4104; X64-AVX512-NEXT:    retq # encoding: [0xc3]4105;4106; X32-SSE-LABEL: test_mm_set_epi64x:4107; X32-SSE:       # %bb.0:4108; X32-SSE-NEXT:    movq %rdi, %xmm1 # encoding: [0x66,0x48,0x0f,0x6e,0xcf]4109; X32-SSE-NEXT:    movq %rsi, %xmm0 # encoding: [0x66,0x48,0x0f,0x6e,0xc6]4110; X32-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]4111; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4112; X32-SSE-NEXT:    retq # encoding: [0xc3]4113;4114; X32-AVX1-LABEL: test_mm_set_epi64x:4115; X32-AVX1:       # %bb.0:4116; X32-AVX1-NEXT:    vmovq %rdi, %xmm0 # encoding: [0xc4,0xe1,0xf9,0x6e,0xc7]4117; X32-AVX1-NEXT:    vmovq %rsi, %xmm1 # encoding: [0xc4,0xe1,0xf9,0x6e,0xce]4118; X32-AVX1-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x6c,0xc0]4119; X32-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]4120; X32-AVX1-NEXT:    retq # encoding: [0xc3]4121;4122; X32-AVX512-LABEL: test_mm_set_epi64x:4123; X32-AVX512:       # %bb.0:4124; X32-AVX512-NEXT:    vmovq %rdi, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xc7]4125; X32-AVX512-NEXT:    vmovq %rsi, %xmm1 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xce]4126; X32-AVX512-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf1,0x6c,0xc0]4127; X32-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]4128; X32-AVX512-NEXT:    retq # encoding: [0xc3]4129  %res0  = insertelement <2 x i64> undef, i64 %a1, i32 04130  %res1  = insertelement <2 x i64> %res0, i64 %a0, i32 14131  ret <2 x i64> %res14132}4133 4134define <2 x double> @test_mm_set_pd(double %a0, double %a1) nounwind {4135; X86-SSE-LABEL: test_mm_set_pd:4136; X86-SSE:       # %bb.0:4137; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero4138; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x44,0x24,0x0c]4139; X86-SSE-NEXT:    movsd {{.*#+}} xmm1 = mem[0],zero4140; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x4c,0x24,0x04]4141; X86-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]4142; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4143; X86-SSE-NEXT:    retl # encoding: [0xc3]4144;4145; X86-AVX1-LABEL: test_mm_set_pd:4146; X86-AVX1:       # %bb.0:4147; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero4148; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x44,0x24,0x0c]4149; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero4150; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x4c,0x24,0x04]4151; X86-AVX1-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0xc1]4152; X86-AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0]4153; X86-AVX1-NEXT:    retl # encoding: [0xc3]4154;4155; X86-AVX512-LABEL: test_mm_set_pd:4156; X86-AVX512:       # %bb.0:4157; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero4158; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x44,0x24,0x0c]4159; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero4160; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x4c,0x24,0x04]4161; X86-AVX512-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0xc1]4162; X86-AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0]4163; X86-AVX512-NEXT:    retl # encoding: [0xc3]4164;4165; X64-SSE-LABEL: test_mm_set_pd:4166; X64-SSE:       # %bb.0:4167; X64-SSE-NEXT:    movlhps %xmm0, %xmm1 # encoding: [0x0f,0x16,0xc8]4168; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0]4169; X64-SSE-NEXT:    movaps %xmm1, %xmm0 # encoding: [0x0f,0x28,0xc1]4170; X64-SSE-NEXT:    retq # encoding: [0xc3]4171;4172; X64-AVX1-LABEL: test_mm_set_pd:4173; X64-AVX1:       # %bb.0:4174; X64-AVX1-NEXT:    vmovlhps %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf0,0x16,0xc0]4175; X64-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]4176; X64-AVX1-NEXT:    retq # encoding: [0xc3]4177;4178; X64-AVX512-LABEL: test_mm_set_pd:4179; X64-AVX512:       # %bb.0:4180; X64-AVX512-NEXT:    vmovlhps %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf0,0x16,0xc0]4181; X64-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]4182; X64-AVX512-NEXT:    retq # encoding: [0xc3]4183;4184; X32-SSE-LABEL: test_mm_set_pd:4185; X32-SSE:       # %bb.0:4186; X32-SSE-NEXT:    movlhps %xmm0, %xmm1 # encoding: [0x0f,0x16,0xc8]4187; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0]4188; X32-SSE-NEXT:    movaps %xmm1, %xmm0 # encoding: [0x0f,0x28,0xc1]4189; X32-SSE-NEXT:    retq # encoding: [0xc3]4190;4191; X32-AVX1-LABEL: test_mm_set_pd:4192; X32-AVX1:       # %bb.0:4193; X32-AVX1-NEXT:    vmovlhps %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf0,0x16,0xc0]4194; X32-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]4195; X32-AVX1-NEXT:    retq # encoding: [0xc3]4196;4197; X32-AVX512-LABEL: test_mm_set_pd:4198; X32-AVX512:       # %bb.0:4199; X32-AVX512-NEXT:    vmovlhps %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf0,0x16,0xc0]4200; X32-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]4201; X32-AVX512-NEXT:    retq # encoding: [0xc3]4202  %res0  = insertelement <2 x double> undef, double %a1, i32 04203  %res1  = insertelement <2 x double> %res0, double %a0, i32 14204  ret <2 x double> %res14205}4206 4207define <2 x double> @test_mm_set_pd1(double %a0) nounwind {4208; X86-SSE-LABEL: test_mm_set_pd1:4209; X86-SSE:       # %bb.0:4210; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero4211; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x44,0x24,0x04]4212; X86-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]4213; X86-SSE-NEXT:    # xmm0 = xmm0[0,0]4214; X86-SSE-NEXT:    retl # encoding: [0xc3]4215;4216; X86-AVX1-LABEL: test_mm_set_pd1:4217; X86-AVX1:       # %bb.0:4218; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero4219; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x44,0x24,0x04]4220; X86-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]4221; X86-AVX1-NEXT:    # xmm0 = xmm0[0,0]4222; X86-AVX1-NEXT:    retl # encoding: [0xc3]4223;4224; X86-AVX512-LABEL: test_mm_set_pd1:4225; X86-AVX512:       # %bb.0:4226; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero4227; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x44,0x24,0x04]4228; X86-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]4229; X86-AVX512-NEXT:    # xmm0 = xmm0[0,0]4230; X86-AVX512-NEXT:    retl # encoding: [0xc3]4231;4232; X64-SSE-LABEL: test_mm_set_pd1:4233; X64-SSE:       # %bb.0:4234; X64-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]4235; X64-SSE-NEXT:    # xmm0 = xmm0[0,0]4236; X64-SSE-NEXT:    retq # encoding: [0xc3]4237;4238; X64-AVX1-LABEL: test_mm_set_pd1:4239; X64-AVX1:       # %bb.0:4240; X64-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]4241; X64-AVX1-NEXT:    # xmm0 = xmm0[0,0]4242; X64-AVX1-NEXT:    retq # encoding: [0xc3]4243;4244; X64-AVX512-LABEL: test_mm_set_pd1:4245; X64-AVX512:       # %bb.0:4246; X64-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]4247; X64-AVX512-NEXT:    # xmm0 = xmm0[0,0]4248; X64-AVX512-NEXT:    retq # encoding: [0xc3]4249;4250; X32-SSE-LABEL: test_mm_set_pd1:4251; X32-SSE:       # %bb.0:4252; X32-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]4253; X32-SSE-NEXT:    # xmm0 = xmm0[0,0]4254; X32-SSE-NEXT:    retq # encoding: [0xc3]4255;4256; X32-AVX1-LABEL: test_mm_set_pd1:4257; X32-AVX1:       # %bb.0:4258; X32-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]4259; X32-AVX1-NEXT:    # xmm0 = xmm0[0,0]4260; X32-AVX1-NEXT:    retq # encoding: [0xc3]4261;4262; X32-AVX512-LABEL: test_mm_set_pd1:4263; X32-AVX512:       # %bb.0:4264; X32-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]4265; X32-AVX512-NEXT:    # xmm0 = xmm0[0,0]4266; X32-AVX512-NEXT:    retq # encoding: [0xc3]4267  %res0  = insertelement <2 x double> undef, double %a0, i32 04268  %res1  = insertelement <2 x double> %res0, double %a0, i32 14269  ret <2 x double> %res14270}4271 4272define <2 x double> @test_mm_set_sd(double %a0) nounwind {4273; X86-SSE-LABEL: test_mm_set_sd:4274; X86-SSE:       # %bb.0:4275; X86-SSE-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero4276; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x7e,0x44,0x24,0x04]4277; X86-SSE-NEXT:    movq %xmm0, %xmm0 # encoding: [0xf3,0x0f,0x7e,0xc0]4278; X86-SSE-NEXT:    # xmm0 = xmm0[0],zero4279; X86-SSE-NEXT:    retl # encoding: [0xc3]4280;4281; X86-AVX1-LABEL: test_mm_set_sd:4282; X86-AVX1:       # %bb.0:4283; X86-AVX1-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero4284; X86-AVX1-NEXT:    # encoding: [0xc5,0xfa,0x7e,0x44,0x24,0x04]4285; X86-AVX1-NEXT:    vmovq %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x7e,0xc0]4286; X86-AVX1-NEXT:    # xmm0 = xmm0[0],zero4287; X86-AVX1-NEXT:    retl # encoding: [0xc3]4288;4289; X86-AVX512-LABEL: test_mm_set_sd:4290; X86-AVX512:       # %bb.0:4291; X86-AVX512-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero4292; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0x44,0x24,0x04]4293; X86-AVX512-NEXT:    vmovq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0xc0]4294; X86-AVX512-NEXT:    # xmm0 = xmm0[0],zero4295; X86-AVX512-NEXT:    retl # encoding: [0xc3]4296;4297; X64-SSE-LABEL: test_mm_set_sd:4298; X64-SSE:       # %bb.0:4299; X64-SSE-NEXT:    movq %xmm0, %xmm0 # encoding: [0xf3,0x0f,0x7e,0xc0]4300; X64-SSE-NEXT:    # xmm0 = xmm0[0],zero4301; X64-SSE-NEXT:    retq # encoding: [0xc3]4302;4303; X64-AVX1-LABEL: test_mm_set_sd:4304; X64-AVX1:       # %bb.0:4305; X64-AVX1-NEXT:    vmovq %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x7e,0xc0]4306; X64-AVX1-NEXT:    # xmm0 = xmm0[0],zero4307; X64-AVX1-NEXT:    retq # encoding: [0xc3]4308;4309; X64-AVX512-LABEL: test_mm_set_sd:4310; X64-AVX512:       # %bb.0:4311; X64-AVX512-NEXT:    vmovq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0xc0]4312; X64-AVX512-NEXT:    # xmm0 = xmm0[0],zero4313; X64-AVX512-NEXT:    retq # encoding: [0xc3]4314;4315; X32-SSE-LABEL: test_mm_set_sd:4316; X32-SSE:       # %bb.0:4317; X32-SSE-NEXT:    movq %xmm0, %xmm0 # encoding: [0xf3,0x0f,0x7e,0xc0]4318; X32-SSE-NEXT:    # xmm0 = xmm0[0],zero4319; X32-SSE-NEXT:    retq # encoding: [0xc3]4320;4321; X32-AVX1-LABEL: test_mm_set_sd:4322; X32-AVX1:       # %bb.0:4323; X32-AVX1-NEXT:    vmovq %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x7e,0xc0]4324; X32-AVX1-NEXT:    # xmm0 = xmm0[0],zero4325; X32-AVX1-NEXT:    retq # encoding: [0xc3]4326;4327; X32-AVX512-LABEL: test_mm_set_sd:4328; X32-AVX512:       # %bb.0:4329; X32-AVX512-NEXT:    vmovq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0xc0]4330; X32-AVX512-NEXT:    # xmm0 = xmm0[0],zero4331; X32-AVX512-NEXT:    retq # encoding: [0xc3]4332  %res0  = insertelement <2 x double> undef, double %a0, i32 04333  %res1  = insertelement <2 x double> %res0, double 0.0, i32 14334  ret <2 x double> %res14335}4336 4337define <2 x i64> @test_mm_set1_epi8(i8 %a0) nounwind {4338; X86-SSE-LABEL: test_mm_set1_epi8:4339; X86-SSE:       # %bb.0:4340; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]4341; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4342; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm0 # encoding: [0x66,0x0f,0x60,0xc0]4343; X86-SSE-NEXT:    # xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]4344; X86-SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]4345; X86-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4346; X86-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4347; X86-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4348; X86-SSE-NEXT:    retl # encoding: [0xc3]4349;4350; X86-AVX1-LABEL: test_mm_set1_epi8:4351; X86-AVX1:       # %bb.0:4352; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]4353; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]4354; X86-AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0xef,0xc9]4355; X86-AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm0 # encoding: [0xc4,0xe2,0x79,0x00,0xc1]4356; X86-AVX1-NEXT:    retl # encoding: [0xc3]4357;4358; X86-AVX512-LABEL: test_mm_set1_epi8:4359; X86-AVX512:       # %bb.0:4360; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]4361; X86-AVX512-NEXT:    vpbroadcastb %eax, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7a,0xc0]4362; X86-AVX512-NEXT:    retl # encoding: [0xc3]4363;4364; X64-SSE-LABEL: test_mm_set1_epi8:4365; X64-SSE:       # %bb.0:4366; X64-SSE-NEXT:    movzbl %dil, %eax # encoding: [0x40,0x0f,0xb6,0xc7]4367; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4368; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm0 # encoding: [0x66,0x0f,0x60,0xc0]4369; X64-SSE-NEXT:    # xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]4370; X64-SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]4371; X64-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4372; X64-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4373; X64-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4374; X64-SSE-NEXT:    retq # encoding: [0xc3]4375;4376; X64-AVX1-LABEL: test_mm_set1_epi8:4377; X64-AVX1:       # %bb.0:4378; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4379; X64-AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0xef,0xc9]4380; X64-AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm0 # encoding: [0xc4,0xe2,0x79,0x00,0xc1]4381; X64-AVX1-NEXT:    retq # encoding: [0xc3]4382;4383; X64-AVX512-LABEL: test_mm_set1_epi8:4384; X64-AVX512:       # %bb.0:4385; X64-AVX512-NEXT:    vpbroadcastb %edi, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7a,0xc7]4386; X64-AVX512-NEXT:    retq # encoding: [0xc3]4387;4388; X32-SSE-LABEL: test_mm_set1_epi8:4389; X32-SSE:       # %bb.0:4390; X32-SSE-NEXT:    movzbl %dil, %eax # encoding: [0x40,0x0f,0xb6,0xc7]4391; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4392; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm0 # encoding: [0x66,0x0f,0x60,0xc0]4393; X32-SSE-NEXT:    # xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]4394; X32-SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]4395; X32-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4396; X32-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4397; X32-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4398; X32-SSE-NEXT:    retq # encoding: [0xc3]4399;4400; X32-AVX1-LABEL: test_mm_set1_epi8:4401; X32-AVX1:       # %bb.0:4402; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4403; X32-AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0xef,0xc9]4404; X32-AVX1-NEXT:    vpshufb %xmm1, %xmm0, %xmm0 # encoding: [0xc4,0xe2,0x79,0x00,0xc1]4405; X32-AVX1-NEXT:    retq # encoding: [0xc3]4406;4407; X32-AVX512-LABEL: test_mm_set1_epi8:4408; X32-AVX512:       # %bb.0:4409; X32-AVX512-NEXT:    vpbroadcastb %edi, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7a,0xc7]4410; X32-AVX512-NEXT:    retq # encoding: [0xc3]4411  %res0  = insertelement <16 x i8> undef,  i8 %a0, i32 04412  %res1  = insertelement <16 x i8> %res0,  i8 %a0, i32 14413  %res2  = insertelement <16 x i8> %res1,  i8 %a0, i32 24414  %res3  = insertelement <16 x i8> %res2,  i8 %a0, i32 34415  %res4  = insertelement <16 x i8> %res3,  i8 %a0, i32 44416  %res5  = insertelement <16 x i8> %res4,  i8 %a0, i32 54417  %res6  = insertelement <16 x i8> %res5,  i8 %a0, i32 64418  %res7  = insertelement <16 x i8> %res6,  i8 %a0, i32 74419  %res8  = insertelement <16 x i8> %res7,  i8 %a0, i32 84420  %res9  = insertelement <16 x i8> %res8,  i8 %a0, i32 94421  %res10 = insertelement <16 x i8> %res9,  i8 %a0, i32 104422  %res11 = insertelement <16 x i8> %res10, i8 %a0, i32 114423  %res12 = insertelement <16 x i8> %res11, i8 %a0, i32 124424  %res13 = insertelement <16 x i8> %res12, i8 %a0, i32 134425  %res14 = insertelement <16 x i8> %res13, i8 %a0, i32 144426  %res15 = insertelement <16 x i8> %res14, i8 %a0, i32 154427  %res = bitcast <16 x i8> %res15 to <2 x i64>4428  ret <2 x i64> %res4429}4430 4431define <2 x i64> @test_mm_set1_epi16(i16 %a0) nounwind {4432; X86-SSE-LABEL: test_mm_set1_epi16:4433; X86-SSE:       # %bb.0:4434; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]4435; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4436; X86-SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]4437; X86-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4438; X86-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4439; X86-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4440; X86-SSE-NEXT:    retl # encoding: [0xc3]4441;4442; X86-AVX1-LABEL: test_mm_set1_epi16:4443; X86-AVX1:       # %bb.0:4444; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]4445; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]4446; X86-AVX1-NEXT:    vpshuflw $0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x70,0xc0,0x00]4447; X86-AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4448; X86-AVX1-NEXT:    vpshufd $68, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x44]4449; X86-AVX1-NEXT:    # xmm0 = xmm0[0,1,0,1]4450; X86-AVX1-NEXT:    retl # encoding: [0xc3]4451;4452; X86-AVX512-LABEL: test_mm_set1_epi16:4453; X86-AVX512:       # %bb.0:4454; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]4455; X86-AVX512-NEXT:    vpbroadcastw %eax, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7b,0xc0]4456; X86-AVX512-NEXT:    retl # encoding: [0xc3]4457;4458; X64-SSE-LABEL: test_mm_set1_epi16:4459; X64-SSE:       # %bb.0:4460; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]4461; X64-SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]4462; X64-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4463; X64-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4464; X64-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4465; X64-SSE-NEXT:    retq # encoding: [0xc3]4466;4467; X64-AVX1-LABEL: test_mm_set1_epi16:4468; X64-AVX1:       # %bb.0:4469; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4470; X64-AVX1-NEXT:    vpshuflw $0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x70,0xc0,0x00]4471; X64-AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4472; X64-AVX1-NEXT:    vpshufd $68, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x44]4473; X64-AVX1-NEXT:    # xmm0 = xmm0[0,1,0,1]4474; X64-AVX1-NEXT:    retq # encoding: [0xc3]4475;4476; X64-AVX512-LABEL: test_mm_set1_epi16:4477; X64-AVX512:       # %bb.0:4478; X64-AVX512-NEXT:    vpbroadcastw %edi, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7b,0xc7]4479; X64-AVX512-NEXT:    retq # encoding: [0xc3]4480;4481; X32-SSE-LABEL: test_mm_set1_epi16:4482; X32-SSE:       # %bb.0:4483; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]4484; X32-SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]4485; X32-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4486; X32-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4487; X32-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4488; X32-SSE-NEXT:    retq # encoding: [0xc3]4489;4490; X32-AVX1-LABEL: test_mm_set1_epi16:4491; X32-AVX1:       # %bb.0:4492; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4493; X32-AVX1-NEXT:    vpshuflw $0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x70,0xc0,0x00]4494; X32-AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]4495; X32-AVX1-NEXT:    vpshufd $68, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x44]4496; X32-AVX1-NEXT:    # xmm0 = xmm0[0,1,0,1]4497; X32-AVX1-NEXT:    retq # encoding: [0xc3]4498;4499; X32-AVX512-LABEL: test_mm_set1_epi16:4500; X32-AVX512:       # %bb.0:4501; X32-AVX512-NEXT:    vpbroadcastw %edi, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7b,0xc7]4502; X32-AVX512-NEXT:    retq # encoding: [0xc3]4503  %res0  = insertelement <8 x i16> undef, i16 %a0, i32 04504  %res1  = insertelement <8 x i16> %res0, i16 %a0, i32 14505  %res2  = insertelement <8 x i16> %res1, i16 %a0, i32 24506  %res3  = insertelement <8 x i16> %res2, i16 %a0, i32 34507  %res4  = insertelement <8 x i16> %res3, i16 %a0, i32 44508  %res5  = insertelement <8 x i16> %res4, i16 %a0, i32 54509  %res6  = insertelement <8 x i16> %res5, i16 %a0, i32 64510  %res7  = insertelement <8 x i16> %res6, i16 %a0, i32 74511  %res = bitcast <8 x i16> %res7 to <2 x i64>4512  ret <2 x i64> %res4513}4514 4515define <2 x i64> @test_mm_set1_epi32(i32 %a0) nounwind {4516; X86-SSE-LABEL: test_mm_set1_epi32:4517; X86-SSE:       # %bb.0:4518; X86-SSE-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero4519; X86-SSE-NEXT:    # encoding: [0x66,0x0f,0x6e,0x44,0x24,0x04]4520; X86-SSE-NEXT:    pshufd $0, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x00]4521; X86-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0]4522; X86-SSE-NEXT:    retl # encoding: [0xc3]4523;4524; X86-AVX1-LABEL: test_mm_set1_epi32:4525; X86-AVX1:       # %bb.0:4526; X86-AVX1-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero4527; X86-AVX1-NEXT:    # encoding: [0xc5,0xfa,0x10,0x44,0x24,0x04]4528; X86-AVX1-NEXT:    vshufps $0, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0xc6,0xc0,0x00]4529; X86-AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0]4530; X86-AVX1-NEXT:    retl # encoding: [0xc3]4531;4532; X86-AVX512-LABEL: test_mm_set1_epi32:4533; X86-AVX512:       # %bb.0:4534; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]4535; X86-AVX512-NEXT:    vpbroadcastd %eax, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7c,0xc0]4536; X86-AVX512-NEXT:    retl # encoding: [0xc3]4537;4538; X64-SSE-LABEL: test_mm_set1_epi32:4539; X64-SSE:       # %bb.0:4540; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]4541; X64-SSE-NEXT:    pshufd $0, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x00]4542; X64-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0]4543; X64-SSE-NEXT:    retq # encoding: [0xc3]4544;4545; X64-AVX1-LABEL: test_mm_set1_epi32:4546; X64-AVX1:       # %bb.0:4547; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4548; X64-AVX1-NEXT:    vpshufd $0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x00]4549; X64-AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0]4550; X64-AVX1-NEXT:    retq # encoding: [0xc3]4551;4552; X64-AVX512-LABEL: test_mm_set1_epi32:4553; X64-AVX512:       # %bb.0:4554; X64-AVX512-NEXT:    vpbroadcastd %edi, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7c,0xc7]4555; X64-AVX512-NEXT:    retq # encoding: [0xc3]4556;4557; X32-SSE-LABEL: test_mm_set1_epi32:4558; X32-SSE:       # %bb.0:4559; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]4560; X32-SSE-NEXT:    pshufd $0, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x00]4561; X32-SSE-NEXT:    # xmm0 = xmm0[0,0,0,0]4562; X32-SSE-NEXT:    retq # encoding: [0xc3]4563;4564; X32-AVX1-LABEL: test_mm_set1_epi32:4565; X32-AVX1:       # %bb.0:4566; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4567; X32-AVX1-NEXT:    vpshufd $0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x00]4568; X32-AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0]4569; X32-AVX1-NEXT:    retq # encoding: [0xc3]4570;4571; X32-AVX512-LABEL: test_mm_set1_epi32:4572; X32-AVX512:       # %bb.0:4573; X32-AVX512-NEXT:    vpbroadcastd %edi, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x7c,0xc7]4574; X32-AVX512-NEXT:    retq # encoding: [0xc3]4575  %res0  = insertelement <4 x i32> undef, i32 %a0, i32 04576  %res1  = insertelement <4 x i32> %res0, i32 %a0, i32 14577  %res2  = insertelement <4 x i32> %res1, i32 %a0, i32 24578  %res3  = insertelement <4 x i32> %res2, i32 %a0, i32 34579  %res = bitcast <4 x i32> %res3 to <2 x i64>4580  ret <2 x i64> %res4581}4582 4583; TODO test_mm_set1_epi644584 4585define <2 x i64> @test_mm_set1_epi64x(i64 %a0) nounwind {4586; X86-SSE-LABEL: test_mm_set1_epi64x:4587; X86-SSE:       # %bb.0:4588; X86-SSE-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero4589; X86-SSE-NEXT:    # encoding: [0x66,0x0f,0x6e,0x44,0x24,0x04]4590; X86-SSE-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero4591; X86-SSE-NEXT:    # encoding: [0x66,0x0f,0x6e,0x4c,0x24,0x08]4592; X86-SSE-NEXT:    punpckldq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x62,0xc1]4593; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]4594; X86-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4595; X86-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4596; X86-SSE-NEXT:    retl # encoding: [0xc3]4597;4598; X86-AVX1-LABEL: test_mm_set1_epi64x:4599; X86-AVX1:       # %bb.0:4600; X86-AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero4601; X86-AVX1-NEXT:    # encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x04]4602; X86-AVX1-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x01]4603; X86-AVX1-NEXT:    vpshufd $68, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x44]4604; X86-AVX1-NEXT:    # xmm0 = xmm0[0,1,0,1]4605; X86-AVX1-NEXT:    retl # encoding: [0xc3]4606;4607; X86-AVX512-LABEL: test_mm_set1_epi64x:4608; X86-AVX512:       # %bb.0:4609; X86-AVX512-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero4610; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x04]4611; X86-AVX512-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x01]4612; X86-AVX512-NEXT:    vpbroadcastq %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x59,0xc0]4613; X86-AVX512-NEXT:    retl # encoding: [0xc3]4614;4615; X64-SSE-LABEL: test_mm_set1_epi64x:4616; X64-SSE:       # %bb.0:4617; X64-SSE-NEXT:    movq %rdi, %xmm0 # encoding: [0x66,0x48,0x0f,0x6e,0xc7]4618; X64-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4619; X64-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4620; X64-SSE-NEXT:    retq # encoding: [0xc3]4621;4622; X64-AVX1-LABEL: test_mm_set1_epi64x:4623; X64-AVX1:       # %bb.0:4624; X64-AVX1-NEXT:    vmovq %rdi, %xmm0 # encoding: [0xc4,0xe1,0xf9,0x6e,0xc7]4625; X64-AVX1-NEXT:    vpshufd $68, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x44]4626; X64-AVX1-NEXT:    # xmm0 = xmm0[0,1,0,1]4627; X64-AVX1-NEXT:    retq # encoding: [0xc3]4628;4629; X64-AVX512-LABEL: test_mm_set1_epi64x:4630; X64-AVX512:       # %bb.0:4631; X64-AVX512-NEXT:    vpbroadcastq %rdi, %xmm0 # encoding: [0x62,0xf2,0xfd,0x08,0x7c,0xc7]4632; X64-AVX512-NEXT:    retq # encoding: [0xc3]4633;4634; X32-SSE-LABEL: test_mm_set1_epi64x:4635; X32-SSE:       # %bb.0:4636; X32-SSE-NEXT:    movq %rdi, %xmm0 # encoding: [0x66,0x48,0x0f,0x6e,0xc7]4637; X32-SSE-NEXT:    pshufd $68, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x44]4638; X32-SSE-NEXT:    # xmm0 = xmm0[0,1,0,1]4639; X32-SSE-NEXT:    retq # encoding: [0xc3]4640;4641; X32-AVX1-LABEL: test_mm_set1_epi64x:4642; X32-AVX1:       # %bb.0:4643; X32-AVX1-NEXT:    vmovq %rdi, %xmm0 # encoding: [0xc4,0xe1,0xf9,0x6e,0xc7]4644; X32-AVX1-NEXT:    vpshufd $68, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x70,0xc0,0x44]4645; X32-AVX1-NEXT:    # xmm0 = xmm0[0,1,0,1]4646; X32-AVX1-NEXT:    retq # encoding: [0xc3]4647;4648; X32-AVX512-LABEL: test_mm_set1_epi64x:4649; X32-AVX512:       # %bb.0:4650; X32-AVX512-NEXT:    vpbroadcastq %rdi, %xmm0 # encoding: [0x62,0xf2,0xfd,0x08,0x7c,0xc7]4651; X32-AVX512-NEXT:    retq # encoding: [0xc3]4652  %res0  = insertelement <2 x i64> undef, i64 %a0, i32 04653  %res1  = insertelement <2 x i64> %res0, i64 %a0, i32 14654  ret <2 x i64> %res14655}4656 4657define <2 x double> @test_mm_set1_pd(double %a0) nounwind {4658; X86-SSE-LABEL: test_mm_set1_pd:4659; X86-SSE:       # %bb.0:4660; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero4661; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x44,0x24,0x04]4662; X86-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]4663; X86-SSE-NEXT:    # xmm0 = xmm0[0,0]4664; X86-SSE-NEXT:    retl # encoding: [0xc3]4665;4666; X86-AVX1-LABEL: test_mm_set1_pd:4667; X86-AVX1:       # %bb.0:4668; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero4669; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x44,0x24,0x04]4670; X86-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]4671; X86-AVX1-NEXT:    # xmm0 = xmm0[0,0]4672; X86-AVX1-NEXT:    retl # encoding: [0xc3]4673;4674; X86-AVX512-LABEL: test_mm_set1_pd:4675; X86-AVX512:       # %bb.0:4676; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero4677; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x44,0x24,0x04]4678; X86-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]4679; X86-AVX512-NEXT:    # xmm0 = xmm0[0,0]4680; X86-AVX512-NEXT:    retl # encoding: [0xc3]4681;4682; X64-SSE-LABEL: test_mm_set1_pd:4683; X64-SSE:       # %bb.0:4684; X64-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]4685; X64-SSE-NEXT:    # xmm0 = xmm0[0,0]4686; X64-SSE-NEXT:    retq # encoding: [0xc3]4687;4688; X64-AVX1-LABEL: test_mm_set1_pd:4689; X64-AVX1:       # %bb.0:4690; X64-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]4691; X64-AVX1-NEXT:    # xmm0 = xmm0[0,0]4692; X64-AVX1-NEXT:    retq # encoding: [0xc3]4693;4694; X64-AVX512-LABEL: test_mm_set1_pd:4695; X64-AVX512:       # %bb.0:4696; X64-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]4697; X64-AVX512-NEXT:    # xmm0 = xmm0[0,0]4698; X64-AVX512-NEXT:    retq # encoding: [0xc3]4699;4700; X32-SSE-LABEL: test_mm_set1_pd:4701; X32-SSE:       # %bb.0:4702; X32-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]4703; X32-SSE-NEXT:    # xmm0 = xmm0[0,0]4704; X32-SSE-NEXT:    retq # encoding: [0xc3]4705;4706; X32-AVX1-LABEL: test_mm_set1_pd:4707; X32-AVX1:       # %bb.0:4708; X32-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]4709; X32-AVX1-NEXT:    # xmm0 = xmm0[0,0]4710; X32-AVX1-NEXT:    retq # encoding: [0xc3]4711;4712; X32-AVX512-LABEL: test_mm_set1_pd:4713; X32-AVX512:       # %bb.0:4714; X32-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]4715; X32-AVX512-NEXT:    # xmm0 = xmm0[0,0]4716; X32-AVX512-NEXT:    retq # encoding: [0xc3]4717  %res0  = insertelement <2 x double> undef, double %a0, i32 04718  %res1  = insertelement <2 x double> %res0, double %a0, i32 14719  ret <2 x double> %res14720}4721 4722define <2 x i64> @test_mm_setr_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15) nounwind {4723; X86-SSE-LABEL: test_mm_setr_epi8:4724; X86-SSE:       # %bb.0:4725; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]4726; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4727; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x3c]4728; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]4729; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]4730; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]4731; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]4732; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4733; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x34]4734; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4735; X86-SSE-NEXT:    punpcklbw %xmm2, %xmm0 # encoding: [0x66,0x0f,0x60,0xc2]4736; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]4737; X86-SSE-NEXT:    punpcklwd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x61,0xc1]4738; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]4739; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]4740; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]4741; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x2c]4742; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4743; X86-SSE-NEXT:    punpcklbw %xmm1, %xmm2 # encoding: [0x66,0x0f,0x60,0xd1]4744; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]4745; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]4746; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]4747; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x24]4748; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]4749; X86-SSE-NEXT:    punpcklbw %xmm3, %xmm1 # encoding: [0x66,0x0f,0x60,0xcb]4750; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]4751; X86-SSE-NEXT:    punpcklwd %xmm2, %xmm1 # encoding: [0x66,0x0f,0x61,0xca]4752; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]4753; X86-SSE-NEXT:    punpckldq %xmm0, %xmm1 # encoding: [0x66,0x0f,0x62,0xc8]4754; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4755; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]4756; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4757; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x1c]4758; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]4759; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]4760; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]4761; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]4762; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4763; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x14]4764; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4765; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]4766; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]4767; X86-SSE-NEXT:    punpcklwd %xmm3, %xmm2 # encoding: [0x66,0x0f,0x61,0xd3]4768; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]4769; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]4770; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4771; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x0c]4772; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]4773; X86-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]4774; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]4775; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]4776; X86-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]4777; X86-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]4778; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4779; X86-SSE-NEXT:    punpcklbw %xmm4, %xmm0 # encoding: [0x66,0x0f,0x60,0xc4]4780; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]4781; X86-SSE-NEXT:    punpcklwd %xmm3, %xmm0 # encoding: [0x66,0x0f,0x61,0xc3]4782; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]4783; X86-SSE-NEXT:    punpckldq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x62,0xc2]4784; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]4785; X86-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]4786; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4787; X86-SSE-NEXT:    retl # encoding: [0xc3]4788;4789; X86-AVX1-LABEL: test_mm_setr_epi8:4790; X86-AVX1:       # %bb.0:4791; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]4792; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]4793; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]4794; X86-AVX1-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]4795; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x0c]4796; X86-AVX1-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]4797; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]4798; X86-AVX1-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]4799; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x14]4800; X86-AVX1-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]4801; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]4802; X86-AVX1-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]4803; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x1c]4804; X86-AVX1-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]4805; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]4806; X86-AVX1-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]4807; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x24]4808; X86-AVX1-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]4809; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]4810; X86-AVX1-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]4811; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x2c]4812; X86-AVX1-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]4813; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]4814; X86-AVX1-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]4815; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x34]4816; X86-AVX1-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]4817; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]4818; X86-AVX1-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]4819; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x3c]4820; X86-AVX1-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]4821; X86-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]4822; X86-AVX1-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]4823; X86-AVX1-NEXT:    retl # encoding: [0xc3]4824;4825; X86-AVX512-LABEL: test_mm_setr_epi8:4826; X86-AVX512:       # %bb.0:4827; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]4828; X86-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]4829; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]4830; X86-AVX512-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x01]4831; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x0c]4832; X86-AVX512-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x02]4833; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]4834; X86-AVX512-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x03]4835; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x14]4836; X86-AVX512-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x04]4837; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]4838; X86-AVX512-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x05]4839; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x1c]4840; X86-AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]4841; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]4842; X86-AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]4843; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x24]4844; X86-AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]4845; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]4846; X86-AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]4847; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x2c]4848; X86-AVX512-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]4849; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]4850; X86-AVX512-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]4851; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x34]4852; X86-AVX512-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]4853; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]4854; X86-AVX512-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]4855; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x3c]4856; X86-AVX512-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]4857; X86-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]4858; X86-AVX512-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]4859; X86-AVX512-NEXT:    retl # encoding: [0xc3]4860;4861; X64-SSE-LABEL: test_mm_setr_epi8:4862; X64-SSE:       # %bb.0:4863; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x50]4864; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4865; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x48]4866; X64-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]4867; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]4868; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]4869; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]4870; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4871; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]4872; X64-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4873; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]4874; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]4875; X64-SSE-NEXT:    punpcklwd %xmm1, %xmm2 # encoding: [0x66,0x0f,0x61,0xd1]4876; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]4877; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]4878; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4879; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]4880; X64-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]4881; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]4882; X64-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]4883; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]4884; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4885; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]4886; X64-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]4887; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]4888; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]4889; X64-SSE-NEXT:    punpcklwd %xmm3, %xmm1 # encoding: [0x66,0x0f,0x61,0xcb]4890; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]4891; X64-SSE-NEXT:    punpckldq %xmm2, %xmm1 # encoding: [0x66,0x0f,0x62,0xca]4892; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]4893; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]4894; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4895; X64-SSE-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]4896; X64-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4897; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]4898; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]4899; X64-SSE-NEXT:    movzbl %r9b, %eax # encoding: [0x41,0x0f,0xb6,0xc1]4900; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4901; X64-SSE-NEXT:    movzbl %r8b, %eax # encoding: [0x41,0x0f,0xb6,0xc0]4902; X64-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]4903; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]4904; X64-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]4905; X64-SSE-NEXT:    punpcklwd %xmm2, %xmm3 # encoding: [0x66,0x0f,0x61,0xda]4906; X64-SSE-NEXT:    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]4907; X64-SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]4908; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4909; X64-SSE-NEXT:    movzbl %dl, %eax # encoding: [0x0f,0xb6,0xc2]4910; X64-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4911; X64-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]4912; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]4913; X64-SSE-NEXT:    movzbl %sil, %eax # encoding: [0x40,0x0f,0xb6,0xc6]4914; X64-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]4915; X64-SSE-NEXT:    movzbl %dil, %eax # encoding: [0x40,0x0f,0xb6,0xc7]4916; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4917; X64-SSE-NEXT:    punpcklbw %xmm4, %xmm0 # encoding: [0x66,0x0f,0x60,0xc4]4918; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]4919; X64-SSE-NEXT:    punpcklwd %xmm2, %xmm0 # encoding: [0x66,0x0f,0x61,0xc2]4920; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]4921; X64-SSE-NEXT:    punpckldq %xmm3, %xmm0 # encoding: [0x66,0x0f,0x62,0xc3]4922; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]4923; X64-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]4924; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]4925; X64-SSE-NEXT:    retq # encoding: [0xc3]4926;4927; X64-AVX1-LABEL: test_mm_setr_epi8:4928; X64-AVX1:       # %bb.0:4929; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]4930; X64-AVX1-NEXT:    vpinsrb $1, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x01]4931; X64-AVX1-NEXT:    vpinsrb $2, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x02]4932; X64-AVX1-NEXT:    vpinsrb $3, %ecx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x03]4933; X64-AVX1-NEXT:    vpinsrb $4, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x04]4934; X64-AVX1-NEXT:    vpinsrb $5, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x05]4935; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]4936; X64-AVX1-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]4937; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]4938; X64-AVX1-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]4939; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]4940; X64-AVX1-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]4941; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]4942; X64-AVX1-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]4943; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]4944; X64-AVX1-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]4945; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]4946; X64-AVX1-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]4947; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]4948; X64-AVX1-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]4949; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]4950; X64-AVX1-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]4951; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x48]4952; X64-AVX1-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]4953; X64-AVX1-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x50]4954; X64-AVX1-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]4955; X64-AVX1-NEXT:    retq # encoding: [0xc3]4956;4957; X64-AVX512-LABEL: test_mm_setr_epi8:4958; X64-AVX512:       # %bb.0:4959; X64-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]4960; X64-AVX512-NEXT:    vpinsrb $1, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x01]4961; X64-AVX512-NEXT:    vpinsrb $2, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x02]4962; X64-AVX512-NEXT:    vpinsrb $3, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x03]4963; X64-AVX512-NEXT:    vpinsrb $4, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x04]4964; X64-AVX512-NEXT:    vpinsrb $5, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x05]4965; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08]4966; X64-AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]4967; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x10]4968; X64-AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]4969; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x18]4970; X64-AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]4971; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x20]4972; X64-AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]4973; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x28]4974; X64-AVX512-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]4975; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x30]4976; X64-AVX512-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]4977; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x38]4978; X64-AVX512-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]4979; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x40]4980; X64-AVX512-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]4981; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x48]4982; X64-AVX512-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]4983; X64-AVX512-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x50]4984; X64-AVX512-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]4985; X64-AVX512-NEXT:    retq # encoding: [0xc3]4986;4987; X32-SSE-LABEL: test_mm_setr_epi8:4988; X32-SSE:       # %bb.0:4989; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x50]4990; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4991; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x48]4992; X32-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]4993; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]4994; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]4995; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x40]4996; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]4997; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x38]4998; X32-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]4999; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]5000; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]5001; X32-SSE-NEXT:    punpcklwd %xmm1, %xmm2 # encoding: [0x66,0x0f,0x61,0xd1]5002; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]5003; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x30]5004; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5005; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x28]5006; X32-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]5007; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]5008; X32-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]5009; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x20]5010; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5011; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x18]5012; X32-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]5013; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm1 # encoding: [0x66,0x0f,0x60,0xc8]5014; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]5015; X32-SSE-NEXT:    punpcklwd %xmm3, %xmm1 # encoding: [0x66,0x0f,0x61,0xcb]5016; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]5017; X32-SSE-NEXT:    punpckldq %xmm2, %xmm1 # encoding: [0x66,0x0f,0x62,0xca]5018; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]5019; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x10]5020; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5021; X32-SSE-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x08]5022; X32-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]5023; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]5024; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]5025; X32-SSE-NEXT:    movzbl %r9b, %eax # encoding: [0x41,0x0f,0xb6,0xc1]5026; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5027; X32-SSE-NEXT:    movzbl %r8b, %eax # encoding: [0x41,0x0f,0xb6,0xc0]5028; X32-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]5029; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm3 # encoding: [0x66,0x0f,0x60,0xd8]5030; X32-SSE-NEXT:    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]5031; X32-SSE-NEXT:    punpcklwd %xmm2, %xmm3 # encoding: [0x66,0x0f,0x61,0xda]5032; X32-SSE-NEXT:    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]5033; X32-SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]5034; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5035; X32-SSE-NEXT:    movzbl %dl, %eax # encoding: [0x0f,0xb6,0xc2]5036; X32-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]5037; X32-SSE-NEXT:    punpcklbw %xmm0, %xmm2 # encoding: [0x66,0x0f,0x60,0xd0]5038; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]5039; X32-SSE-NEXT:    movzbl %sil, %eax # encoding: [0x40,0x0f,0xb6,0xc6]5040; X32-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]5041; X32-SSE-NEXT:    movzbl %dil, %eax # encoding: [0x40,0x0f,0xb6,0xc7]5042; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5043; X32-SSE-NEXT:    punpcklbw %xmm4, %xmm0 # encoding: [0x66,0x0f,0x60,0xc4]5044; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]5045; X32-SSE-NEXT:    punpcklwd %xmm2, %xmm0 # encoding: [0x66,0x0f,0x61,0xc2]5046; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]5047; X32-SSE-NEXT:    punpckldq %xmm3, %xmm0 # encoding: [0x66,0x0f,0x62,0xc3]5048; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]5049; X32-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]5050; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5051; X32-SSE-NEXT:    retq # encoding: [0xc3]5052;5053; X32-AVX1-LABEL: test_mm_setr_epi8:5054; X32-AVX1:       # %bb.0:5055; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]5056; X32-AVX1-NEXT:    vpinsrb $1, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x01]5057; X32-AVX1-NEXT:    vpinsrb $2, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x02]5058; X32-AVX1-NEXT:    vpinsrb $3, %ecx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x03]5059; X32-AVX1-NEXT:    vpinsrb $4, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x04]5060; X32-AVX1-NEXT:    vpinsrb $5, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x05]5061; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x08]5062; X32-AVX1-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]5063; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x10]5064; X32-AVX1-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]5065; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x18]5066; X32-AVX1-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]5067; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x20]5068; X32-AVX1-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]5069; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x28]5070; X32-AVX1-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]5071; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x30]5072; X32-AVX1-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]5073; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x38]5074; X32-AVX1-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]5075; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x40]5076; X32-AVX1-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]5077; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x48]5078; X32-AVX1-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]5079; X32-AVX1-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x50]5080; X32-AVX1-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]5081; X32-AVX1-NEXT:    retq # encoding: [0xc3]5082;5083; X32-AVX512-LABEL: test_mm_setr_epi8:5084; X32-AVX512:       # %bb.0:5085; X32-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]5086; X32-AVX512-NEXT:    vpinsrb $1, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc6,0x01]5087; X32-AVX512-NEXT:    vpinsrb $2, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc2,0x02]5088; X32-AVX512-NEXT:    vpinsrb $3, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc1,0x03]5089; X32-AVX512-NEXT:    vpinsrb $4, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc0,0x04]5090; X32-AVX512-NEXT:    vpinsrb $5, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc3,0x79,0x20,0xc1,0x05]5091; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x08]5092; X32-AVX512-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x06]5093; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x10]5094; X32-AVX512-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x07]5095; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x18]5096; X32-AVX512-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x08]5097; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x20]5098; X32-AVX512-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x09]5099; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x28]5100; X32-AVX512-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0a]5101; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x30]5102; X32-AVX512-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0b]5103; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x38]5104; X32-AVX512-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0c]5105; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x40]5106; X32-AVX512-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0d]5107; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x48]5108; X32-AVX512-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0e]5109; X32-AVX512-NEXT:    movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb6,0x44,0x24,0x50]5110; X32-AVX512-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc0,0x0f]5111; X32-AVX512-NEXT:    retq # encoding: [0xc3]5112  %res0  = insertelement <16 x i8> undef,  i8 %a0 , i32 05113  %res1  = insertelement <16 x i8> %res0,  i8 %a1 , i32 15114  %res2  = insertelement <16 x i8> %res1,  i8 %a2 , i32 25115  %res3  = insertelement <16 x i8> %res2,  i8 %a3 , i32 35116  %res4  = insertelement <16 x i8> %res3,  i8 %a4 , i32 45117  %res5  = insertelement <16 x i8> %res4,  i8 %a5 , i32 55118  %res6  = insertelement <16 x i8> %res5,  i8 %a6 , i32 65119  %res7  = insertelement <16 x i8> %res6,  i8 %a7 , i32 75120  %res8  = insertelement <16 x i8> %res7,  i8 %a8 , i32 85121  %res9  = insertelement <16 x i8> %res8,  i8 %a9 , i32 95122  %res10 = insertelement <16 x i8> %res9,  i8 %a10, i32 105123  %res11 = insertelement <16 x i8> %res10, i8 %a11, i32 115124  %res12 = insertelement <16 x i8> %res11, i8 %a12, i32 125125  %res13 = insertelement <16 x i8> %res12, i8 %a13, i32 135126  %res14 = insertelement <16 x i8> %res13, i8 %a14, i32 145127  %res15 = insertelement <16 x i8> %res14, i8 %a15, i32 155128  %res = bitcast <16 x i8> %res15 to <2 x i64>5129  ret <2 x i64> %res5130}5131 5132define <2 x i64> @test_mm_setr_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7) nounwind {5133; X86-SSE-LABEL: test_mm_setr_epi16:5134; X86-SSE:       # %bb.0:5135; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x20]5136; X86-SSE-NEXT:    movd %eax, %xmm1 # encoding: [0x66,0x0f,0x6e,0xc8]5137; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x1c]5138; X86-SSE-NEXT:    movd %eax, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd0]5139; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x18]5140; X86-SSE-NEXT:    movd %eax, %xmm4 # encoding: [0x66,0x0f,0x6e,0xe0]5141; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x14]5142; X86-SSE-NEXT:    movd %eax, %xmm3 # encoding: [0x66,0x0f,0x6e,0xd8]5143; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]5144; X86-SSE-NEXT:    movd %eax, %xmm5 # encoding: [0x66,0x0f,0x6e,0xe8]5145; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x0c]5146; X86-SSE-NEXT:    movd %eax, %xmm6 # encoding: [0x66,0x0f,0x6e,0xf0]5147; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x08]5148; X86-SSE-NEXT:    movd %eax, %xmm7 # encoding: [0x66,0x0f,0x6e,0xf8]5149; X86-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]5150; X86-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5151; X86-SSE-NEXT:    punpcklwd %xmm1, %xmm2 # encoding: [0x66,0x0f,0x61,0xd1]5152; X86-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]5153; X86-SSE-NEXT:    punpcklwd %xmm4, %xmm3 # encoding: [0x66,0x0f,0x61,0xdc]5154; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]5155; X86-SSE-NEXT:    punpckldq %xmm2, %xmm3 # encoding: [0x66,0x0f,0x62,0xda]5156; X86-SSE-NEXT:    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]5157; X86-SSE-NEXT:    punpcklwd %xmm5, %xmm6 # encoding: [0x66,0x0f,0x61,0xf5]5158; X86-SSE-NEXT:    # xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3]5159; X86-SSE-NEXT:    punpcklwd %xmm7, %xmm0 # encoding: [0x66,0x0f,0x61,0xc7]5160; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]5161; X86-SSE-NEXT:    punpckldq %xmm6, %xmm0 # encoding: [0x66,0x0f,0x62,0xc6]5162; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]5163; X86-SSE-NEXT:    punpcklqdq %xmm3, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc3]5164; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0]5165; X86-SSE-NEXT:    retl # encoding: [0xc3]5166;5167; X86-AVX1-LABEL: test_mm_setr_epi16:5168; X86-AVX1:       # %bb.0:5169; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]5170; X86-AVX1-NEXT:    vmovd %eax, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc0]5171; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x08]5172; X86-AVX1-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x01]5173; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x0c]5174; X86-AVX1-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x02]5175; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]5176; X86-AVX1-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x03]5177; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x14]5178; X86-AVX1-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x04]5179; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x18]5180; X86-AVX1-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x05]5181; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x1c]5182; X86-AVX1-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x06]5183; X86-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x20]5184; X86-AVX1-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x07]5185; X86-AVX1-NEXT:    retl # encoding: [0xc3]5186;5187; X86-AVX512-LABEL: test_mm_setr_epi16:5188; X86-AVX512:       # %bb.0:5189; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x04]5190; X86-AVX512-NEXT:    vmovd %eax, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc0]5191; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x08]5192; X86-AVX512-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x01]5193; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x0c]5194; X86-AVX512-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x02]5195; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]5196; X86-AVX512-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x03]5197; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x14]5198; X86-AVX512-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x04]5199; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x18]5200; X86-AVX512-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x05]5201; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x1c]5202; X86-AVX512-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x06]5203; X86-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x20]5204; X86-AVX512-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x07]5205; X86-AVX512-NEXT:    retl # encoding: [0xc3]5206;5207; X64-SSE-LABEL: test_mm_setr_epi16:5208; X64-SSE:       # %bb.0:5209; X64-SSE-NEXT:    movzwl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]5210; X64-SSE-NEXT:    movzwl {{[0-9]+}}(%rsp), %r10d # encoding: [0x44,0x0f,0xb7,0x54,0x24,0x08]5211; X64-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5212; X64-SSE-NEXT:    movd %r10d, %xmm1 # encoding: [0x66,0x41,0x0f,0x6e,0xca]5213; X64-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]5214; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5215; X64-SSE-NEXT:    movd %r9d, %xmm0 # encoding: [0x66,0x41,0x0f,0x6e,0xc1]5216; X64-SSE-NEXT:    movd %r8d, %xmm2 # encoding: [0x66,0x41,0x0f,0x6e,0xd0]5217; X64-SSE-NEXT:    punpcklwd %xmm0, %xmm2 # encoding: [0x66,0x0f,0x61,0xd0]5218; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]5219; X64-SSE-NEXT:    punpckldq %xmm1, %xmm2 # encoding: [0x66,0x0f,0x62,0xd1]5220; X64-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]5221; X64-SSE-NEXT:    movd %ecx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc1]5222; X64-SSE-NEXT:    movd %edx, %xmm1 # encoding: [0x66,0x0f,0x6e,0xca]5223; X64-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]5224; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5225; X64-SSE-NEXT:    movd %esi, %xmm3 # encoding: [0x66,0x0f,0x6e,0xde]5226; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]5227; X64-SSE-NEXT:    punpcklwd %xmm3, %xmm0 # encoding: [0x66,0x0f,0x61,0xc3]5228; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]5229; X64-SSE-NEXT:    punpckldq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x62,0xc1]5230; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]5231; X64-SSE-NEXT:    punpcklqdq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc2]5232; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0]5233; X64-SSE-NEXT:    retq # encoding: [0xc3]5234;5235; X64-AVX1-LABEL: test_mm_setr_epi16:5236; X64-AVX1:       # %bb.0:5237; X64-AVX1-NEXT:    movzwl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]5238; X64-AVX1-NEXT:    movzwl {{[0-9]+}}(%rsp), %r10d # encoding: [0x44,0x0f,0xb7,0x54,0x24,0x08]5239; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]5240; X64-AVX1-NEXT:    vpinsrw $1, %esi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc6,0x01]5241; X64-AVX1-NEXT:    vpinsrw $2, %edx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc2,0x02]5242; X64-AVX1-NEXT:    vpinsrw $3, %ecx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc1,0x03]5243; X64-AVX1-NEXT:    vpinsrw $4, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x04]5244; X64-AVX1-NEXT:    vpinsrw $5, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x05]5245; X64-AVX1-NEXT:    vpinsrw $6, %r10d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x06]5246; X64-AVX1-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x07]5247; X64-AVX1-NEXT:    retq # encoding: [0xc3]5248;5249; X64-AVX512-LABEL: test_mm_setr_epi16:5250; X64-AVX512:       # %bb.0:5251; X64-AVX512-NEXT:    movzwl {{[0-9]+}}(%rsp), %eax # encoding: [0x0f,0xb7,0x44,0x24,0x10]5252; X64-AVX512-NEXT:    movzwl {{[0-9]+}}(%rsp), %r10d # encoding: [0x44,0x0f,0xb7,0x54,0x24,0x08]5253; X64-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]5254; X64-AVX512-NEXT:    vpinsrw $1, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc6,0x01]5255; X64-AVX512-NEXT:    vpinsrw $2, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc2,0x02]5256; X64-AVX512-NEXT:    vpinsrw $3, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc1,0x03]5257; X64-AVX512-NEXT:    vpinsrw $4, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x04]5258; X64-AVX512-NEXT:    vpinsrw $5, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x05]5259; X64-AVX512-NEXT:    vpinsrw $6, %r10d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x06]5260; X64-AVX512-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x07]5261; X64-AVX512-NEXT:    retq # encoding: [0xc3]5262;5263; X32-SSE-LABEL: test_mm_setr_epi16:5264; X32-SSE:       # %bb.0:5265; X32-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb7,0x44,0x24,0x10]5266; X32-SSE-NEXT:    movzwl {{[0-9]+}}(%esp), %r10d # encoding: [0x67,0x44,0x0f,0xb7,0x54,0x24,0x08]5267; X32-SSE-NEXT:    movd %eax, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc0]5268; X32-SSE-NEXT:    movd %r10d, %xmm1 # encoding: [0x66,0x41,0x0f,0x6e,0xca]5269; X32-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]5270; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5271; X32-SSE-NEXT:    movd %r9d, %xmm0 # encoding: [0x66,0x41,0x0f,0x6e,0xc1]5272; X32-SSE-NEXT:    movd %r8d, %xmm2 # encoding: [0x66,0x41,0x0f,0x6e,0xd0]5273; X32-SSE-NEXT:    punpcklwd %xmm0, %xmm2 # encoding: [0x66,0x0f,0x61,0xd0]5274; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]5275; X32-SSE-NEXT:    punpckldq %xmm1, %xmm2 # encoding: [0x66,0x0f,0x62,0xd1]5276; X32-SSE-NEXT:    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]5277; X32-SSE-NEXT:    movd %ecx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc1]5278; X32-SSE-NEXT:    movd %edx, %xmm1 # encoding: [0x66,0x0f,0x6e,0xca]5279; X32-SSE-NEXT:    punpcklwd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x61,0xc8]5280; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5281; X32-SSE-NEXT:    movd %esi, %xmm3 # encoding: [0x66,0x0f,0x6e,0xde]5282; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]5283; X32-SSE-NEXT:    punpcklwd %xmm3, %xmm0 # encoding: [0x66,0x0f,0x61,0xc3]5284; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]5285; X32-SSE-NEXT:    punpckldq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x62,0xc1]5286; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]5287; X32-SSE-NEXT:    punpcklqdq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc2]5288; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0]5289; X32-SSE-NEXT:    retq # encoding: [0xc3]5290;5291; X32-AVX1-LABEL: test_mm_setr_epi16:5292; X32-AVX1:       # %bb.0:5293; X32-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb7,0x44,0x24,0x10]5294; X32-AVX1-NEXT:    movzwl {{[0-9]+}}(%esp), %r10d # encoding: [0x67,0x44,0x0f,0xb7,0x54,0x24,0x08]5295; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]5296; X32-AVX1-NEXT:    vpinsrw $1, %esi, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc6,0x01]5297; X32-AVX1-NEXT:    vpinsrw $2, %edx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc2,0x02]5298; X32-AVX1-NEXT:    vpinsrw $3, %ecx, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc1,0x03]5299; X32-AVX1-NEXT:    vpinsrw $4, %r8d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x04]5300; X32-AVX1-NEXT:    vpinsrw $5, %r9d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x05]5301; X32-AVX1-NEXT:    vpinsrw $6, %r10d, %xmm0, %xmm0 # encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x06]5302; X32-AVX1-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc4,0xc0,0x07]5303; X32-AVX1-NEXT:    retq # encoding: [0xc3]5304;5305; X32-AVX512-LABEL: test_mm_setr_epi16:5306; X32-AVX512:       # %bb.0:5307; X32-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %eax # encoding: [0x67,0x0f,0xb7,0x44,0x24,0x10]5308; X32-AVX512-NEXT:    movzwl {{[0-9]+}}(%esp), %r10d # encoding: [0x67,0x44,0x0f,0xb7,0x54,0x24,0x08]5309; X32-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]5310; X32-AVX512-NEXT:    vpinsrw $1, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc6,0x01]5311; X32-AVX512-NEXT:    vpinsrw $2, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc2,0x02]5312; X32-AVX512-NEXT:    vpinsrw $3, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc1,0x03]5313; X32-AVX512-NEXT:    vpinsrw $4, %r8d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc0,0x04]5314; X32-AVX512-NEXT:    vpinsrw $5, %r9d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc1,0x05]5315; X32-AVX512-NEXT:    vpinsrw $6, %r10d, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xc1,0x79,0xc4,0xc2,0x06]5316; X32-AVX512-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc4,0xc0,0x07]5317; X32-AVX512-NEXT:    retq # encoding: [0xc3]5318  %res0  = insertelement <8 x i16> undef, i16 %a0, i32 05319  %res1  = insertelement <8 x i16> %res0, i16 %a1, i32 15320  %res2  = insertelement <8 x i16> %res1, i16 %a2, i32 25321  %res3  = insertelement <8 x i16> %res2, i16 %a3, i32 35322  %res4  = insertelement <8 x i16> %res3, i16 %a4, i32 45323  %res5  = insertelement <8 x i16> %res4, i16 %a5, i32 55324  %res6  = insertelement <8 x i16> %res5, i16 %a6, i32 65325  %res7  = insertelement <8 x i16> %res6, i16 %a7, i32 75326  %res = bitcast <8 x i16> %res7 to <2 x i64>5327  ret <2 x i64> %res5328}5329 5330define <2 x i64> @test_mm_setr_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3) nounwind {5331; X86-SSE-LABEL: test_mm_setr_epi32:5332; X86-SSE:       # %bb.0:5333; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero5334; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x10]5335; X86-SSE-NEXT:    movss {{.*#+}} xmm1 = mem[0],zero,zero,zero5336; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x4c,0x24,0x0c]5337; X86-SSE-NEXT:    unpcklps %xmm0, %xmm1 # encoding: [0x0f,0x14,0xc8]5338; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]5339; X86-SSE-NEXT:    movss {{.*#+}} xmm2 = mem[0],zero,zero,zero5340; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x54,0x24,0x08]5341; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero5342; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x04]5343; X86-SSE-NEXT:    unpcklps %xmm2, %xmm0 # encoding: [0x0f,0x14,0xc2]5344; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]5345; X86-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]5346; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5347; X86-SSE-NEXT:    retl # encoding: [0xc3]5348;5349; X86-AVX1-LABEL: test_mm_setr_epi32:5350; X86-AVX1:       # %bb.0:5351; X86-AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5352; X86-AVX1-NEXT:    # encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x04]5353; X86-AVX1-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x01]5354; X86-AVX1-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x0c,0x02]5355; X86-AVX1-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x10,0x03]5356; X86-AVX1-NEXT:    retl # encoding: [0xc3]5357;5358; X86-AVX512-LABEL: test_mm_setr_epi32:5359; X86-AVX512:       # %bb.0:5360; X86-AVX512-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5361; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x04]5362; X86-AVX512-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x01]5363; X86-AVX512-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x0c,0x02]5364; X86-AVX512-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x10,0x03]5365; X86-AVX512-NEXT:    retl # encoding: [0xc3]5366;5367; X64-SSE-LABEL: test_mm_setr_epi32:5368; X64-SSE:       # %bb.0:5369; X64-SSE-NEXT:    movd %ecx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc1]5370; X64-SSE-NEXT:    movd %edx, %xmm1 # encoding: [0x66,0x0f,0x6e,0xca]5371; X64-SSE-NEXT:    punpckldq %xmm0, %xmm1 # encoding: [0x66,0x0f,0x62,0xc8]5372; X64-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]5373; X64-SSE-NEXT:    movd %esi, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd6]5374; X64-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]5375; X64-SSE-NEXT:    punpckldq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x62,0xc2]5376; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]5377; X64-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]5378; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5379; X64-SSE-NEXT:    retq # encoding: [0xc3]5380;5381; X64-AVX1-LABEL: test_mm_setr_epi32:5382; X64-AVX1:       # %bb.0:5383; X64-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]5384; X64-AVX1-NEXT:    vpinsrd $1, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x01]5385; X64-AVX1-NEXT:    vpinsrd $2, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x02]5386; X64-AVX1-NEXT:    vpinsrd $3, %ecx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x03]5387; X64-AVX1-NEXT:    retq # encoding: [0xc3]5388;5389; X64-AVX512-LABEL: test_mm_setr_epi32:5390; X64-AVX512:       # %bb.0:5391; X64-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]5392; X64-AVX512-NEXT:    vpinsrd $1, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x01]5393; X64-AVX512-NEXT:    vpinsrd $2, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x02]5394; X64-AVX512-NEXT:    vpinsrd $3, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x03]5395; X64-AVX512-NEXT:    retq # encoding: [0xc3]5396;5397; X32-SSE-LABEL: test_mm_setr_epi32:5398; X32-SSE:       # %bb.0:5399; X32-SSE-NEXT:    movd %ecx, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc1]5400; X32-SSE-NEXT:    movd %edx, %xmm1 # encoding: [0x66,0x0f,0x6e,0xca]5401; X32-SSE-NEXT:    punpckldq %xmm0, %xmm1 # encoding: [0x66,0x0f,0x62,0xc8]5402; X32-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]5403; X32-SSE-NEXT:    movd %esi, %xmm2 # encoding: [0x66,0x0f,0x6e,0xd6]5404; X32-SSE-NEXT:    movd %edi, %xmm0 # encoding: [0x66,0x0f,0x6e,0xc7]5405; X32-SSE-NEXT:    punpckldq %xmm2, %xmm0 # encoding: [0x66,0x0f,0x62,0xc2]5406; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]5407; X32-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]5408; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5409; X32-SSE-NEXT:    retq # encoding: [0xc3]5410;5411; X32-AVX1-LABEL: test_mm_setr_epi32:5412; X32-AVX1:       # %bb.0:5413; X32-AVX1-NEXT:    vmovd %edi, %xmm0 # encoding: [0xc5,0xf9,0x6e,0xc7]5414; X32-AVX1-NEXT:    vpinsrd $1, %esi, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x01]5415; X32-AVX1-NEXT:    vpinsrd $2, %edx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x02]5416; X32-AVX1-NEXT:    vpinsrd $3, %ecx, %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x03]5417; X32-AVX1-NEXT:    retq # encoding: [0xc3]5418;5419; X32-AVX512-LABEL: test_mm_setr_epi32:5420; X32-AVX512:       # %bb.0:5421; X32-AVX512-NEXT:    vmovd %edi, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0xc7]5422; X32-AVX512-NEXT:    vpinsrd $1, %esi, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc6,0x01]5423; X32-AVX512-NEXT:    vpinsrd $2, %edx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x02]5424; X32-AVX512-NEXT:    vpinsrd $3, %ecx, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x03]5425; X32-AVX512-NEXT:    retq # encoding: [0xc3]5426  %res0  = insertelement <4 x i32> undef, i32 %a0, i32 05427  %res1  = insertelement <4 x i32> %res0, i32 %a1, i32 15428  %res2  = insertelement <4 x i32> %res1, i32 %a2, i32 25429  %res3  = insertelement <4 x i32> %res2, i32 %a3, i32 35430  %res = bitcast <4 x i32> %res3 to <2 x i64>5431  ret <2 x i64> %res5432}5433 5434; TODO test_mm_setr_epi645435 5436define <2 x i64> @test_mm_setr_epi64x(i64 %a0, i64 %a1) nounwind {5437; X86-SSE-LABEL: test_mm_setr_epi64x:5438; X86-SSE:       # %bb.0:5439; X86-SSE-NEXT:    movss {{.*#+}} xmm1 = mem[0],zero,zero,zero5440; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x4c,0x24,0x0c]5441; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero5442; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x10]5443; X86-SSE-NEXT:    unpcklps %xmm0, %xmm1 # encoding: [0x0f,0x14,0xc8]5444; X86-SSE-NEXT:    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]5445; X86-SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero5446; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x44,0x24,0x04]5447; X86-SSE-NEXT:    movss {{.*#+}} xmm2 = mem[0],zero,zero,zero5448; X86-SSE-NEXT:    # encoding: [0xf3,0x0f,0x10,0x54,0x24,0x08]5449; X86-SSE-NEXT:    unpcklps %xmm2, %xmm0 # encoding: [0x0f,0x14,0xc2]5450; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]5451; X86-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]5452; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5453; X86-SSE-NEXT:    retl # encoding: [0xc3]5454;5455; X86-AVX1-LABEL: test_mm_setr_epi64x:5456; X86-AVX1:       # %bb.0:5457; X86-AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5458; X86-AVX1-NEXT:    # encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x04]5459; X86-AVX1-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x01]5460; X86-AVX1-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x0c,0x02]5461; X86-AVX1-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x10,0x03]5462; X86-AVX1-NEXT:    retl # encoding: [0xc3]5463;5464; X86-AVX512-LABEL: test_mm_setr_epi64x:5465; X86-AVX512:       # %bb.0:5466; X86-AVX512-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero5467; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6e,0x44,0x24,0x04]5468; X86-AVX512-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x08,0x01]5469; X86-AVX512-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x0c,0x02]5470; X86-AVX512-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x44,0x24,0x10,0x03]5471; X86-AVX512-NEXT:    retl # encoding: [0xc3]5472;5473; X64-SSE-LABEL: test_mm_setr_epi64x:5474; X64-SSE:       # %bb.0:5475; X64-SSE-NEXT:    movq %rsi, %xmm1 # encoding: [0x66,0x48,0x0f,0x6e,0xce]5476; X64-SSE-NEXT:    movq %rdi, %xmm0 # encoding: [0x66,0x48,0x0f,0x6e,0xc7]5477; X64-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]5478; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5479; X64-SSE-NEXT:    retq # encoding: [0xc3]5480;5481; X64-AVX1-LABEL: test_mm_setr_epi64x:5482; X64-AVX1:       # %bb.0:5483; X64-AVX1-NEXT:    vmovq %rsi, %xmm0 # encoding: [0xc4,0xe1,0xf9,0x6e,0xc6]5484; X64-AVX1-NEXT:    vmovq %rdi, %xmm1 # encoding: [0xc4,0xe1,0xf9,0x6e,0xcf]5485; X64-AVX1-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x6c,0xc0]5486; X64-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]5487; X64-AVX1-NEXT:    retq # encoding: [0xc3]5488;5489; X64-AVX512-LABEL: test_mm_setr_epi64x:5490; X64-AVX512:       # %bb.0:5491; X64-AVX512-NEXT:    vmovq %rsi, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xc6]5492; X64-AVX512-NEXT:    vmovq %rdi, %xmm1 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xcf]5493; X64-AVX512-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf1,0x6c,0xc0]5494; X64-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]5495; X64-AVX512-NEXT:    retq # encoding: [0xc3]5496;5497; X32-SSE-LABEL: test_mm_setr_epi64x:5498; X32-SSE:       # %bb.0:5499; X32-SSE-NEXT:    movq %rsi, %xmm1 # encoding: [0x66,0x48,0x0f,0x6e,0xce]5500; X32-SSE-NEXT:    movq %rdi, %xmm0 # encoding: [0x66,0x48,0x0f,0x6e,0xc7]5501; X32-SSE-NEXT:    punpcklqdq %xmm1, %xmm0 # encoding: [0x66,0x0f,0x6c,0xc1]5502; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5503; X32-SSE-NEXT:    retq # encoding: [0xc3]5504;5505; X32-AVX1-LABEL: test_mm_setr_epi64x:5506; X32-AVX1:       # %bb.0:5507; X32-AVX1-NEXT:    vmovq %rsi, %xmm0 # encoding: [0xc4,0xe1,0xf9,0x6e,0xc6]5508; X32-AVX1-NEXT:    vmovq %rdi, %xmm1 # encoding: [0xc4,0xe1,0xf9,0x6e,0xcf]5509; X32-AVX1-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf1,0x6c,0xc0]5510; X32-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]5511; X32-AVX1-NEXT:    retq # encoding: [0xc3]5512;5513; X32-AVX512-LABEL: test_mm_setr_epi64x:5514; X32-AVX512:       # %bb.0:5515; X32-AVX512-NEXT:    vmovq %rsi, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xc6]5516; X32-AVX512-NEXT:    vmovq %rdi, %xmm1 # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x6e,0xcf]5517; X32-AVX512-NEXT:    vpunpcklqdq %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf1,0x6c,0xc0]5518; X32-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]5519; X32-AVX512-NEXT:    retq # encoding: [0xc3]5520  %res0  = insertelement <2 x i64> undef, i64 %a0, i32 05521  %res1  = insertelement <2 x i64> %res0, i64 %a1, i32 15522  ret <2 x i64> %res15523}5524 5525define <2 x double> @test_mm_setr_pd(double %a0, double %a1) nounwind {5526; X86-SSE-LABEL: test_mm_setr_pd:5527; X86-SSE:       # %bb.0:5528; X86-SSE-NEXT:    movsd {{.*#+}} xmm1 = mem[0],zero5529; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x4c,0x24,0x0c]5530; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero5531; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x44,0x24,0x04]5532; X86-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]5533; X86-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5534; X86-SSE-NEXT:    retl # encoding: [0xc3]5535;5536; X86-AVX1-LABEL: test_mm_setr_pd:5537; X86-AVX1:       # %bb.0:5538; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero5539; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x44,0x24,0x0c]5540; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero5541; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x4c,0x24,0x04]5542; X86-AVX1-NEXT:    vmovlhps %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf0,0x16,0xc0]5543; X86-AVX1-NEXT:    # xmm0 = xmm1[0],xmm0[0]5544; X86-AVX1-NEXT:    retl # encoding: [0xc3]5545;5546; X86-AVX512-LABEL: test_mm_setr_pd:5547; X86-AVX512:       # %bb.0:5548; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero5549; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x44,0x24,0x0c]5550; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero5551; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x4c,0x24,0x04]5552; X86-AVX512-NEXT:    vmovlhps %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf0,0x16,0xc0]5553; X86-AVX512-NEXT:    # xmm0 = xmm1[0],xmm0[0]5554; X86-AVX512-NEXT:    retl # encoding: [0xc3]5555;5556; X64-SSE-LABEL: test_mm_setr_pd:5557; X64-SSE:       # %bb.0:5558; X64-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]5559; X64-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5560; X64-SSE-NEXT:    retq # encoding: [0xc3]5561;5562; X64-AVX1-LABEL: test_mm_setr_pd:5563; X64-AVX1:       # %bb.0:5564; X64-AVX1-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0xc1]5565; X64-AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0]5566; X64-AVX1-NEXT:    retq # encoding: [0xc3]5567;5568; X64-AVX512-LABEL: test_mm_setr_pd:5569; X64-AVX512:       # %bb.0:5570; X64-AVX512-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0xc1]5571; X64-AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0]5572; X64-AVX512-NEXT:    retq # encoding: [0xc3]5573;5574; X32-SSE-LABEL: test_mm_setr_pd:5575; X32-SSE:       # %bb.0:5576; X32-SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]5577; X32-SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]5578; X32-SSE-NEXT:    retq # encoding: [0xc3]5579;5580; X32-AVX1-LABEL: test_mm_setr_pd:5581; X32-AVX1:       # %bb.0:5582; X32-AVX1-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0xc1]5583; X32-AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0]5584; X32-AVX1-NEXT:    retq # encoding: [0xc3]5585;5586; X32-AVX512-LABEL: test_mm_setr_pd:5587; X32-AVX512:       # %bb.0:5588; X32-AVX512-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0xc1]5589; X32-AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0]5590; X32-AVX512-NEXT:    retq # encoding: [0xc3]5591  %res0  = insertelement <2 x double> undef, double %a0, i32 05592  %res1  = insertelement <2 x double> %res0, double %a1, i32 15593  ret <2 x double> %res15594}5595 5596define <2 x double> @test_mm_setzero_pd() {5597; SSE-LABEL: test_mm_setzero_pd:5598; SSE:       # %bb.0:5599; SSE-NEXT:    xorps %xmm0, %xmm0 # encoding: [0x0f,0x57,0xc0]5600; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5601;5602; AVX1-LABEL: test_mm_setzero_pd:5603; AVX1:       # %bb.0:5604; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x57,0xc0]5605; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5606;5607; AVX512-LABEL: test_mm_setzero_pd:5608; AVX512:       # %bb.0:5609; AVX512-NEXT:    vxorps %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x57,0xc0]5610; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5611  ret <2 x double> zeroinitializer5612}5613 5614define <2 x i64> @test_mm_setzero_si128() {5615; SSE-LABEL: test_mm_setzero_si128:5616; SSE:       # %bb.0:5617; SSE-NEXT:    xorps %xmm0, %xmm0 # encoding: [0x0f,0x57,0xc0]5618; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5619;5620; AVX1-LABEL: test_mm_setzero_si128:5621; AVX1:       # %bb.0:5622; AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x57,0xc0]5623; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5624;5625; AVX512-LABEL: test_mm_setzero_si128:5626; AVX512:       # %bb.0:5627; AVX512-NEXT:    vxorps %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x57,0xc0]5628; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5629  ret <2 x i64> zeroinitializer5630}5631 5632define <2 x i64> @test_mm_shuffle_epi32(<2 x i64> %a0) {5633; SSE-LABEL: test_mm_shuffle_epi32:5634; SSE:       # %bb.0:5635; SSE-NEXT:    pshufd $0, %xmm0, %xmm0 # encoding: [0x66,0x0f,0x70,0xc0,0x00]5636; SSE-NEXT:    # xmm0 = xmm0[0,0,0,0]5637; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5638;5639; AVX1-LABEL: test_mm_shuffle_epi32:5640; AVX1:       # %bb.0:5641; AVX1-NEXT:    vshufps $0, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0xc6,0xc0,0x00]5642; AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0]5643; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5644;5645; AVX512-LABEL: test_mm_shuffle_epi32:5646; AVX512:       # %bb.0:5647; AVX512-NEXT:    vbroadcastss %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0xc0]5648; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5649  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>5650  %res = shufflevector <4 x i32> %arg0, <4 x i32> undef, <4 x i32> zeroinitializer5651  %bc = bitcast <4 x i32> %res to <2 x i64>5652  ret <2 x i64> %bc5653}5654 5655define <2 x double> @test_mm_shuffle_pd(<2 x double> %a0, <2 x double> %a1) {5656; SSE-LABEL: test_mm_shuffle_pd:5657; SSE:       # %bb.0:5658; SSE-NEXT:    shufps $78, %xmm1, %xmm0 # encoding: [0x0f,0xc6,0xc1,0x4e]5659; SSE-NEXT:    # xmm0 = xmm0[2,3],xmm1[0,1]5660; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5661;5662; AVX1-LABEL: test_mm_shuffle_pd:5663; AVX1:       # %bb.0:5664; AVX1-NEXT:    vshufpd $1, %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc1,0x01]5665; AVX1-NEXT:    # xmm0 = xmm0[1],xmm1[0]5666; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5667;5668; AVX512-LABEL: test_mm_shuffle_pd:5669; AVX512:       # %bb.0:5670; AVX512-NEXT:    vshufpd $1, %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc1,0x01]5671; AVX512-NEXT:    # xmm0 = xmm0[1],xmm1[0]5672; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5673  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 2>5674  ret <2 x double> %res5675}5676 5677define <2 x i64> @test_mm_shufflehi_epi16(<2 x i64> %a0) {5678; SSE-LABEL: test_mm_shufflehi_epi16:5679; SSE:       # %bb.0:5680; SSE-NEXT:    pshufhw $0, %xmm0, %xmm0 # encoding: [0xf3,0x0f,0x70,0xc0,0x00]5681; SSE-NEXT:    # xmm0 = xmm0[0,1,2,3,4,4,4,4]5682; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5683;5684; AVX1-LABEL: test_mm_shufflehi_epi16:5685; AVX1:       # %bb.0:5686; AVX1-NEXT:    vpshufhw $0, %xmm0, %xmm0 # encoding: [0xc5,0xfa,0x70,0xc0,0x00]5687; AVX1-NEXT:    # xmm0 = xmm0[0,1,2,3,4,4,4,4]5688; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5689;5690; AVX512-LABEL: test_mm_shufflehi_epi16:5691; AVX512:       # %bb.0:5692; AVX512-NEXT:    vpshufhw $0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfa,0x70,0xc0,0x00]5693; AVX512-NEXT:    # xmm0 = xmm0[0,1,2,3,4,4,4,4]5694; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5695  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>5696  %res = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 4, i32 4, i32 4>5697  %bc = bitcast <8 x i16> %res to <2 x i64>5698  ret <2 x i64> %bc5699}5700 5701define <2 x i64> @test_mm_shufflelo_epi16(<2 x i64> %a0) {5702; SSE-LABEL: test_mm_shufflelo_epi16:5703; SSE:       # %bb.0:5704; SSE-NEXT:    pshuflw $0, %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x70,0xc0,0x00]5705; SSE-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]5706; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5707;5708; AVX1-LABEL: test_mm_shufflelo_epi16:5709; AVX1:       # %bb.0:5710; AVX1-NEXT:    vpshuflw $0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x70,0xc0,0x00]5711; AVX1-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]5712; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5713;5714; AVX512-LABEL: test_mm_shufflelo_epi16:5715; AVX512:       # %bb.0:5716; AVX512-NEXT:    vpshuflw $0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x70,0xc0,0x00]5717; AVX512-NEXT:    # xmm0 = xmm0[0,0,0,0,4,5,6,7]5718; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5719  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>5720  %res = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>5721  %bc = bitcast <8 x i16> %res to <2 x i64>5722  ret <2 x i64> %bc5723}5724 5725define <2 x i64> @test_mm_sll_epi16(<2 x i64> %a0, <2 x i64> %a1) {5726; SSE-LABEL: test_mm_sll_epi16:5727; SSE:       # %bb.0:5728; SSE-NEXT:    psllw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf1,0xc1]5729; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5730;5731; AVX1-LABEL: test_mm_sll_epi16:5732; AVX1:       # %bb.0:5733; AVX1-NEXT:    vpsllw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf1,0xc1]5734; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5735;5736; AVX512-LABEL: test_mm_sll_epi16:5737; AVX512:       # %bb.0:5738; AVX512-NEXT:    vpsllw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf1,0xc1]5739; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5740  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>5741  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>5742  %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %arg0, <8 x i16> %arg1)5743  %bc = bitcast <8 x i16> %res to <2 x i64>5744  ret <2 x i64> %bc5745}5746declare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone5747 5748define <2 x i64> @test_mm_sll_epi32(<2 x i64> %a0, <2 x i64> %a1) {5749; SSE-LABEL: test_mm_sll_epi32:5750; SSE:       # %bb.0:5751; SSE-NEXT:    pslld %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf2,0xc1]5752; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5753;5754; AVX1-LABEL: test_mm_sll_epi32:5755; AVX1:       # %bb.0:5756; AVX1-NEXT:    vpslld %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf2,0xc1]5757; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5758;5759; AVX512-LABEL: test_mm_sll_epi32:5760; AVX512:       # %bb.0:5761; AVX512-NEXT:    vpslld %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf2,0xc1]5762; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5763  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>5764  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>5765  %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %arg0, <4 x i32> %arg1)5766  %bc = bitcast <4 x i32> %res to <2 x i64>5767  ret <2 x i64> %bc5768}5769declare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone5770 5771define <2 x i64> @test_mm_sll_epi64(<2 x i64> %a0, <2 x i64> %a1) {5772; SSE-LABEL: test_mm_sll_epi64:5773; SSE:       # %bb.0:5774; SSE-NEXT:    psllq %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf3,0xc1]5775; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5776;5777; AVX1-LABEL: test_mm_sll_epi64:5778; AVX1:       # %bb.0:5779; AVX1-NEXT:    vpsllq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf3,0xc1]5780; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5781;5782; AVX512-LABEL: test_mm_sll_epi64:5783; AVX512:       # %bb.0:5784; AVX512-NEXT:    vpsllq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf3,0xc1]5785; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5786  %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1)5787  ret <2 x i64> %res5788}5789declare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone5790 5791define <2 x i64> @test_mm_slli_epi16(<2 x i64> %a0) {5792; SSE-LABEL: test_mm_slli_epi16:5793; SSE:       # %bb.0:5794; SSE-NEXT:    psllw $2, %xmm0 # encoding: [0x66,0x0f,0x71,0xf0,0x02]5795; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5796;5797; AVX1-LABEL: test_mm_slli_epi16:5798; AVX1:       # %bb.0:5799; AVX1-NEXT:    vpsllw $2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x71,0xf0,0x02]5800; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5801;5802; AVX512-LABEL: test_mm_slli_epi16:5803; AVX512:       # %bb.0:5804; AVX512-NEXT:    vpsllw $2, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x71,0xf0,0x02]5805; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5806  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>5807  %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %arg0, i32 2)5808  %bc = bitcast <8 x i16> %res to <2 x i64>5809  ret <2 x i64> %bc5810}5811declare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone5812 5813define <2 x i64> @test_mm_slli_epi32(<2 x i64> %a0) {5814; SSE-LABEL: test_mm_slli_epi32:5815; SSE:       # %bb.0:5816; SSE-NEXT:    pslld $2, %xmm0 # encoding: [0x66,0x0f,0x72,0xf0,0x02]5817; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5818;5819; AVX1-LABEL: test_mm_slli_epi32:5820; AVX1:       # %bb.0:5821; AVX1-NEXT:    vpslld $2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x72,0xf0,0x02]5822; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5823;5824; AVX512-LABEL: test_mm_slli_epi32:5825; AVX512:       # %bb.0:5826; AVX512-NEXT:    vpslld $2, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x72,0xf0,0x02]5827; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5828  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>5829  %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %arg0, i32 2)5830  %bc = bitcast <4 x i32> %res to <2 x i64>5831  ret <2 x i64> %bc5832}5833declare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone5834 5835define <2 x i64> @test_mm_slli_epi64(<2 x i64> %a0) {5836; SSE-LABEL: test_mm_slli_epi64:5837; SSE:       # %bb.0:5838; SSE-NEXT:    psllq $2, %xmm0 # encoding: [0x66,0x0f,0x73,0xf0,0x02]5839; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5840;5841; AVX1-LABEL: test_mm_slli_epi64:5842; AVX1:       # %bb.0:5843; AVX1-NEXT:    vpsllq $2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x73,0xf0,0x02]5844; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5845;5846; AVX512-LABEL: test_mm_slli_epi64:5847; AVX512:       # %bb.0:5848; AVX512-NEXT:    vpsllq $2, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x73,0xf0,0x02]5849; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5850  %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 2)5851  ret <2 x i64> %res5852}5853declare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone5854 5855define <2 x i64> @test_mm_slli_si128(<2 x i64> %a0) nounwind {5856; SSE-LABEL: test_mm_slli_si128:5857; SSE:       # %bb.0:5858; SSE-NEXT:    pslldq $5, %xmm0 # encoding: [0x66,0x0f,0x73,0xf8,0x05]5859; SSE-NEXT:    # xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]5860; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5861;5862; AVX1-LABEL: test_mm_slli_si128:5863; AVX1:       # %bb.0:5864; AVX1-NEXT:    vpslldq $5, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x73,0xf8,0x05]5865; AVX1-NEXT:    # xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]5866; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5867;5868; AVX512-LABEL: test_mm_slli_si128:5869; AVX512:       # %bb.0:5870; AVX512-NEXT:    vpslldq $5, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x73,0xf8,0x05]5871; AVX512-NEXT:    # xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10]5872; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5873  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>5874  %res = shufflevector <16 x i8> zeroinitializer, <16 x i8> %arg0, <16 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26>5875  %bc = bitcast <16 x i8> %res to <2 x i64>5876  ret <2 x i64> %bc5877}5878 5879define <2 x double> @test_mm_sqrt_pd(<2 x double> %a0) nounwind {5880; SSE-LABEL: test_mm_sqrt_pd:5881; SSE:       # %bb.0:5882; SSE-NEXT:    sqrtpd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x51,0xc0]5883; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5884;5885; AVX1-LABEL: test_mm_sqrt_pd:5886; AVX1:       # %bb.0:5887; AVX1-NEXT:    vsqrtpd %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x51,0xc0]5888; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5889;5890; AVX512-LABEL: test_mm_sqrt_pd:5891; AVX512:       # %bb.0:5892; AVX512-NEXT:    vsqrtpd %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x51,0xc0]5893; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5894  %res = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %a0)5895  ret <2 x double> %res5896}5897declare <2 x double> @llvm.sqrt.v2f64(<2 x double>) nounwind readnone5898 5899define <2 x double> @test_mm_sqrt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {5900; SSE-LABEL: test_mm_sqrt_sd:5901; SSE:       # %bb.0:5902; SSE-NEXT:    sqrtsd %xmm0, %xmm1 # encoding: [0xf2,0x0f,0x51,0xc8]5903; SSE-NEXT:    movapd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x28,0xc1]5904; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5905;5906; AVX1-LABEL: test_mm_sqrt_sd:5907; AVX1:       # %bb.0:5908; AVX1-NEXT:    vsqrtsd %xmm0, %xmm1, %xmm0 # encoding: [0xc5,0xf3,0x51,0xc0]5909; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5910;5911; AVX512-LABEL: test_mm_sqrt_sd:5912; AVX512:       # %bb.0:5913; AVX512-NEXT:    vsqrtsd %xmm0, %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf3,0x51,0xc0]5914; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]5915  %ext = extractelement <2 x double> %a0, i32 05916  %sqrt = call double @llvm.sqrt.f64(double %ext)5917  %ins = insertelement <2 x double> %a1, double %sqrt, i32 05918  ret <2 x double> %ins5919}5920declare double @llvm.sqrt.f64(double) nounwind readnone5921 5922; This doesn't match a clang test, but helps with fast-isel coverage.5923define double @test_mm_sqrt_sd_scalar(double %a0) nounwind {5924; X86-SSE-LABEL: test_mm_sqrt_sd_scalar:5925; X86-SSE:       # %bb.0:5926; X86-SSE-NEXT:    pushl %ebp # encoding: [0x55]5927; X86-SSE-NEXT:    movl %esp, %ebp # encoding: [0x89,0xe5]5928; X86-SSE-NEXT:    andl $-8, %esp # encoding: [0x83,0xe4,0xf8]5929; X86-SSE-NEXT:    subl $8, %esp # encoding: [0x83,0xec,0x08]5930; X86-SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero5931; X86-SSE-NEXT:    # encoding: [0xf2,0x0f,0x10,0x45,0x08]5932; X86-SSE-NEXT:    sqrtsd %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x51,0xc0]5933; X86-SSE-NEXT:    movsd %xmm0, (%esp) # encoding: [0xf2,0x0f,0x11,0x04,0x24]5934; X86-SSE-NEXT:    fldl (%esp) # encoding: [0xdd,0x04,0x24]5935; X86-SSE-NEXT:    movl %ebp, %esp # encoding: [0x89,0xec]5936; X86-SSE-NEXT:    popl %ebp # encoding: [0x5d]5937; X86-SSE-NEXT:    retl # encoding: [0xc3]5938;5939; X86-AVX1-LABEL: test_mm_sqrt_sd_scalar:5940; X86-AVX1:       # %bb.0:5941; X86-AVX1-NEXT:    pushl %ebp # encoding: [0x55]5942; X86-AVX1-NEXT:    movl %esp, %ebp # encoding: [0x89,0xe5]5943; X86-AVX1-NEXT:    andl $-8, %esp # encoding: [0x83,0xe4,0xf8]5944; X86-AVX1-NEXT:    subl $8, %esp # encoding: [0x83,0xec,0x08]5945; X86-AVX1-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero5946; X86-AVX1-NEXT:    # encoding: [0xc5,0xfb,0x10,0x45,0x08]5947; X86-AVX1-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x51,0xc0]5948; X86-AVX1-NEXT:    vmovsd %xmm0, (%esp) # encoding: [0xc5,0xfb,0x11,0x04,0x24]5949; X86-AVX1-NEXT:    fldl (%esp) # encoding: [0xdd,0x04,0x24]5950; X86-AVX1-NEXT:    movl %ebp, %esp # encoding: [0x89,0xec]5951; X86-AVX1-NEXT:    popl %ebp # encoding: [0x5d]5952; X86-AVX1-NEXT:    retl # encoding: [0xc3]5953;5954; X86-AVX512-LABEL: test_mm_sqrt_sd_scalar:5955; X86-AVX512:       # %bb.0:5956; X86-AVX512-NEXT:    pushl %ebp # encoding: [0x55]5957; X86-AVX512-NEXT:    movl %esp, %ebp # encoding: [0x89,0xe5]5958; X86-AVX512-NEXT:    andl $-8, %esp # encoding: [0x83,0xe4,0xf8]5959; X86-AVX512-NEXT:    subl $8, %esp # encoding: [0x83,0xec,0x08]5960; X86-AVX512-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero5961; X86-AVX512-NEXT:    # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x10,0x45,0x08]5962; X86-AVX512-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x51,0xc0]5963; X86-AVX512-NEXT:    vmovsd %xmm0, (%esp) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x04,0x24]5964; X86-AVX512-NEXT:    fldl (%esp) # encoding: [0xdd,0x04,0x24]5965; X86-AVX512-NEXT:    movl %ebp, %esp # encoding: [0x89,0xec]5966; X86-AVX512-NEXT:    popl %ebp # encoding: [0x5d]5967; X86-AVX512-NEXT:    retl # encoding: [0xc3]5968;5969; X64-SSE-LABEL: test_mm_sqrt_sd_scalar:5970; X64-SSE:       # %bb.0:5971; X64-SSE-NEXT:    sqrtsd %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x51,0xc0]5972; X64-SSE-NEXT:    retq # encoding: [0xc3]5973;5974; X64-AVX1-LABEL: test_mm_sqrt_sd_scalar:5975; X64-AVX1:       # %bb.0:5976; X64-AVX1-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x51,0xc0]5977; X64-AVX1-NEXT:    retq # encoding: [0xc3]5978;5979; X64-AVX512-LABEL: test_mm_sqrt_sd_scalar:5980; X64-AVX512:       # %bb.0:5981; X64-AVX512-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x51,0xc0]5982; X64-AVX512-NEXT:    retq # encoding: [0xc3]5983;5984; X32-SSE-LABEL: test_mm_sqrt_sd_scalar:5985; X32-SSE:       # %bb.0:5986; X32-SSE-NEXT:    sqrtsd %xmm0, %xmm0 # encoding: [0xf2,0x0f,0x51,0xc0]5987; X32-SSE-NEXT:    retq # encoding: [0xc3]5988;5989; X32-AVX1-LABEL: test_mm_sqrt_sd_scalar:5990; X32-AVX1:       # %bb.0:5991; X32-AVX1-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x51,0xc0]5992; X32-AVX1-NEXT:    retq # encoding: [0xc3]5993;5994; X32-AVX512-LABEL: test_mm_sqrt_sd_scalar:5995; X32-AVX512:       # %bb.0:5996; X32-AVX512-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x51,0xc0]5997; X32-AVX512-NEXT:    retq # encoding: [0xc3]5998  %sqrt = call double @llvm.sqrt.f64(double %a0)5999  ret double %sqrt6000}6001 6002define <2 x i64> @test_mm_sra_epi16(<2 x i64> %a0, <2 x i64> %a1) {6003; SSE-LABEL: test_mm_sra_epi16:6004; SSE:       # %bb.0:6005; SSE-NEXT:    psraw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe1,0xc1]6006; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6007;6008; AVX1-LABEL: test_mm_sra_epi16:6009; AVX1:       # %bb.0:6010; AVX1-NEXT:    vpsraw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe1,0xc1]6011; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6012;6013; AVX512-LABEL: test_mm_sra_epi16:6014; AVX512:       # %bb.0:6015; AVX512-NEXT:    vpsraw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe1,0xc1]6016; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6017  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>6018  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>6019  %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %arg0, <8 x i16> %arg1)6020  %bc = bitcast <8 x i16> %res to <2 x i64>6021  ret <2 x i64> %bc6022}6023declare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone6024 6025define <2 x i64> @test_mm_sra_epi32(<2 x i64> %a0, <2 x i64> %a1) {6026; SSE-LABEL: test_mm_sra_epi32:6027; SSE:       # %bb.0:6028; SSE-NEXT:    psrad %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe2,0xc1]6029; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6030;6031; AVX1-LABEL: test_mm_sra_epi32:6032; AVX1:       # %bb.0:6033; AVX1-NEXT:    vpsrad %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe2,0xc1]6034; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6035;6036; AVX512-LABEL: test_mm_sra_epi32:6037; AVX512:       # %bb.0:6038; AVX512-NEXT:    vpsrad %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe2,0xc1]6039; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6040  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>6041  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>6042  %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %arg0, <4 x i32> %arg1)6043  %bc = bitcast <4 x i32> %res to <2 x i64>6044  ret <2 x i64> %bc6045}6046declare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone6047 6048define <2 x i64> @test_mm_srai_epi16(<2 x i64> %a0) {6049; SSE-LABEL: test_mm_srai_epi16:6050; SSE:       # %bb.0:6051; SSE-NEXT:    psraw $1, %xmm0 # encoding: [0x66,0x0f,0x71,0xe0,0x01]6052; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6053;6054; AVX1-LABEL: test_mm_srai_epi16:6055; AVX1:       # %bb.0:6056; AVX1-NEXT:    vpsraw $1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x71,0xe0,0x01]6057; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6058;6059; AVX512-LABEL: test_mm_srai_epi16:6060; AVX512:       # %bb.0:6061; AVX512-NEXT:    vpsraw $1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x71,0xe0,0x01]6062; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6063  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>6064  %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %arg0, i32 1)6065  %bc = bitcast <8 x i16> %res to <2 x i64>6066  ret <2 x i64> %bc6067}6068declare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone6069 6070define <2 x i64> @test_mm_srai_epi32(<2 x i64> %a0) {6071; SSE-LABEL: test_mm_srai_epi32:6072; SSE:       # %bb.0:6073; SSE-NEXT:    psrad $1, %xmm0 # encoding: [0x66,0x0f,0x72,0xe0,0x01]6074; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6075;6076; AVX1-LABEL: test_mm_srai_epi32:6077; AVX1:       # %bb.0:6078; AVX1-NEXT:    vpsrad $1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x72,0xe0,0x01]6079; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6080;6081; AVX512-LABEL: test_mm_srai_epi32:6082; AVX512:       # %bb.0:6083; AVX512-NEXT:    vpsrad $1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x72,0xe0,0x01]6084; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6085  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>6086  %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %arg0, i32 1)6087  %bc = bitcast <4 x i32> %res to <2 x i64>6088  ret <2 x i64> %bc6089}6090declare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone6091 6092define <2 x i64> @test_mm_srl_epi16(<2 x i64> %a0, <2 x i64> %a1) {6093; SSE-LABEL: test_mm_srl_epi16:6094; SSE:       # %bb.0:6095; SSE-NEXT:    psrlw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd1,0xc1]6096; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6097;6098; AVX1-LABEL: test_mm_srl_epi16:6099; AVX1:       # %bb.0:6100; AVX1-NEXT:    vpsrlw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd1,0xc1]6101; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6102;6103; AVX512-LABEL: test_mm_srl_epi16:6104; AVX512:       # %bb.0:6105; AVX512-NEXT:    vpsrlw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd1,0xc1]6106; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6107  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>6108  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>6109  %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %arg0, <8 x i16> %arg1)6110  %bc = bitcast <8 x i16> %res to <2 x i64>6111  ret <2 x i64> %bc6112}6113declare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone6114 6115define <2 x i64> @test_mm_srl_epi32(<2 x i64> %a0, <2 x i64> %a1) {6116; SSE-LABEL: test_mm_srl_epi32:6117; SSE:       # %bb.0:6118; SSE-NEXT:    psrld %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd2,0xc1]6119; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6120;6121; AVX1-LABEL: test_mm_srl_epi32:6122; AVX1:       # %bb.0:6123; AVX1-NEXT:    vpsrld %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd2,0xc1]6124; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6125;6126; AVX512-LABEL: test_mm_srl_epi32:6127; AVX512:       # %bb.0:6128; AVX512-NEXT:    vpsrld %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd2,0xc1]6129; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6130  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>6131  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>6132  %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %arg0, <4 x i32> %arg1)6133  %bc = bitcast <4 x i32> %res to <2 x i64>6134  ret <2 x i64> %bc6135}6136declare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone6137 6138define <2 x i64> @test_mm_srl_epi64(<2 x i64> %a0, <2 x i64> %a1) {6139; SSE-LABEL: test_mm_srl_epi64:6140; SSE:       # %bb.0:6141; SSE-NEXT:    psrlq %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd3,0xc1]6142; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6143;6144; AVX1-LABEL: test_mm_srl_epi64:6145; AVX1:       # %bb.0:6146; AVX1-NEXT:    vpsrlq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd3,0xc1]6147; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6148;6149; AVX512-LABEL: test_mm_srl_epi64:6150; AVX512:       # %bb.0:6151; AVX512-NEXT:    vpsrlq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd3,0xc1]6152; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6153  %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1)6154  ret <2 x i64> %res6155}6156declare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone6157 6158define <2 x i64> @test_mm_srli_epi16(<2 x i64> %a0) {6159; SSE-LABEL: test_mm_srli_epi16:6160; SSE:       # %bb.0:6161; SSE-NEXT:    psrlw $1, %xmm0 # encoding: [0x66,0x0f,0x71,0xd0,0x01]6162; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6163;6164; AVX1-LABEL: test_mm_srli_epi16:6165; AVX1:       # %bb.0:6166; AVX1-NEXT:    vpsrlw $1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x71,0xd0,0x01]6167; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6168;6169; AVX512-LABEL: test_mm_srli_epi16:6170; AVX512:       # %bb.0:6171; AVX512-NEXT:    vpsrlw $1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x71,0xd0,0x01]6172; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6173  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>6174  %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %arg0, i32 1)6175  %bc = bitcast <8 x i16> %res to <2 x i64>6176  ret <2 x i64> %bc6177}6178declare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone6179 6180define <2 x i64> @test_mm_srli_epi32(<2 x i64> %a0) {6181; SSE-LABEL: test_mm_srli_epi32:6182; SSE:       # %bb.0:6183; SSE-NEXT:    psrld $1, %xmm0 # encoding: [0x66,0x0f,0x72,0xd0,0x01]6184; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6185;6186; AVX1-LABEL: test_mm_srli_epi32:6187; AVX1:       # %bb.0:6188; AVX1-NEXT:    vpsrld $1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x72,0xd0,0x01]6189; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6190;6191; AVX512-LABEL: test_mm_srli_epi32:6192; AVX512:       # %bb.0:6193; AVX512-NEXT:    vpsrld $1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x72,0xd0,0x01]6194; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6195  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>6196  %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %arg0, i32 1)6197  %bc = bitcast <4 x i32> %res to <2 x i64>6198  ret <2 x i64> %bc6199}6200declare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone6201 6202define <2 x i64> @test_mm_srli_epi64(<2 x i64> %a0) {6203; SSE-LABEL: test_mm_srli_epi64:6204; SSE:       # %bb.0:6205; SSE-NEXT:    psrlq $1, %xmm0 # encoding: [0x66,0x0f,0x73,0xd0,0x01]6206; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6207;6208; AVX1-LABEL: test_mm_srli_epi64:6209; AVX1:       # %bb.0:6210; AVX1-NEXT:    vpsrlq $1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x73,0xd0,0x01]6211; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6212;6213; AVX512-LABEL: test_mm_srli_epi64:6214; AVX512:       # %bb.0:6215; AVX512-NEXT:    vpsrlq $1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x73,0xd0,0x01]6216; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6217  %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 1)6218  ret <2 x i64> %res6219}6220declare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone6221 6222define <2 x i64> @test_mm_srli_si128(<2 x i64> %a0) nounwind {6223; SSE-LABEL: test_mm_srli_si128:6224; SSE:       # %bb.0:6225; SSE-NEXT:    psrldq $5, %xmm0 # encoding: [0x66,0x0f,0x73,0xd8,0x05]6226; SSE-NEXT:    # xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero6227; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6228;6229; AVX1-LABEL: test_mm_srli_si128:6230; AVX1:       # %bb.0:6231; AVX1-NEXT:    vpsrldq $5, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x73,0xd8,0x05]6232; AVX1-NEXT:    # xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero6233; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6234;6235; AVX512-LABEL: test_mm_srli_si128:6236; AVX512:       # %bb.0:6237; AVX512-NEXT:    vpsrldq $5, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x73,0xd8,0x05]6238; AVX512-NEXT:    # xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero6239; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]6240  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>6241  %res = shufflevector <16 x i8> %arg0, <16 x i8> zeroinitializer, <16 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20>6242  %bc = bitcast <16 x i8> %res to <2 x i64>6243  ret <2 x i64> %bc6244}6245 6246define void @test_mm_store_pd(ptr%a0, <2 x double> %a1) {6247; X86-SSE-LABEL: test_mm_store_pd:6248; X86-SSE:       # %bb.0:6249; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6250; X86-SSE-NEXT:    movaps %xmm0, (%eax) # encoding: [0x0f,0x29,0x00]6251; X86-SSE-NEXT:    retl # encoding: [0xc3]6252;6253; X86-AVX1-LABEL: test_mm_store_pd:6254; X86-AVX1:       # %bb.0:6255; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6256; X86-AVX1-NEXT:    vmovaps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x29,0x00]6257; X86-AVX1-NEXT:    retl # encoding: [0xc3]6258;6259; X86-AVX512-LABEL: test_mm_store_pd:6260; X86-AVX512:       # %bb.0:6261; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6262; X86-AVX512-NEXT:    vmovaps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x00]6263; X86-AVX512-NEXT:    retl # encoding: [0xc3]6264;6265; X64-SSE-LABEL: test_mm_store_pd:6266; X64-SSE:       # %bb.0:6267; X64-SSE-NEXT:    movaps %xmm0, (%rdi) # encoding: [0x0f,0x29,0x07]6268; X64-SSE-NEXT:    retq # encoding: [0xc3]6269;6270; X64-AVX1-LABEL: test_mm_store_pd:6271; X64-AVX1:       # %bb.0:6272; X64-AVX1-NEXT:    vmovaps %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x29,0x07]6273; X64-AVX1-NEXT:    retq # encoding: [0xc3]6274;6275; X64-AVX512-LABEL: test_mm_store_pd:6276; X64-AVX512:       # %bb.0:6277; X64-AVX512-NEXT:    vmovaps %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x07]6278; X64-AVX512-NEXT:    retq # encoding: [0xc3]6279;6280; X32-SSE-LABEL: test_mm_store_pd:6281; X32-SSE:       # %bb.0:6282; X32-SSE-NEXT:    movaps %xmm0, (%edi) # encoding: [0x67,0x0f,0x29,0x07]6283; X32-SSE-NEXT:    retq # encoding: [0xc3]6284;6285; X32-AVX1-LABEL: test_mm_store_pd:6286; X32-AVX1:       # %bb.0:6287; X32-AVX1-NEXT:    vmovaps %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x29,0x07]6288; X32-AVX1-NEXT:    retq # encoding: [0xc3]6289;6290; X32-AVX512-LABEL: test_mm_store_pd:6291; X32-AVX512:       # %bb.0:6292; X32-AVX512-NEXT:    vmovaps %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x29,0x07]6293; X32-AVX512-NEXT:    retq # encoding: [0xc3]6294  store <2 x double> %a1, ptr %a0, align 166295  ret void6296}6297 6298define void @test_mm_store_pd1(ptr%a0, <2 x double> %a1) {6299; X86-SSE-LABEL: test_mm_store_pd1:6300; X86-SSE:       # %bb.0:6301; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6302; X86-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]6303; X86-SSE-NEXT:    # xmm0 = xmm0[0,0]6304; X86-SSE-NEXT:    movaps %xmm0, (%eax) # encoding: [0x0f,0x29,0x00]6305; X86-SSE-NEXT:    retl # encoding: [0xc3]6306;6307; X86-AVX1-LABEL: test_mm_store_pd1:6308; X86-AVX1:       # %bb.0:6309; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6310; X86-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]6311; X86-AVX1-NEXT:    # xmm0 = xmm0[0,0]6312; X86-AVX1-NEXT:    vmovaps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x29,0x00]6313; X86-AVX1-NEXT:    retl # encoding: [0xc3]6314;6315; X86-AVX512-LABEL: test_mm_store_pd1:6316; X86-AVX512:       # %bb.0:6317; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6318; X86-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]6319; X86-AVX512-NEXT:    # xmm0 = xmm0[0,0]6320; X86-AVX512-NEXT:    vmovaps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x00]6321; X86-AVX512-NEXT:    retl # encoding: [0xc3]6322;6323; X64-SSE-LABEL: test_mm_store_pd1:6324; X64-SSE:       # %bb.0:6325; X64-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]6326; X64-SSE-NEXT:    # xmm0 = xmm0[0,0]6327; X64-SSE-NEXT:    movaps %xmm0, (%rdi) # encoding: [0x0f,0x29,0x07]6328; X64-SSE-NEXT:    retq # encoding: [0xc3]6329;6330; X64-AVX1-LABEL: test_mm_store_pd1:6331; X64-AVX1:       # %bb.0:6332; X64-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]6333; X64-AVX1-NEXT:    # xmm0 = xmm0[0,0]6334; X64-AVX1-NEXT:    vmovaps %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x29,0x07]6335; X64-AVX1-NEXT:    retq # encoding: [0xc3]6336;6337; X64-AVX512-LABEL: test_mm_store_pd1:6338; X64-AVX512:       # %bb.0:6339; X64-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]6340; X64-AVX512-NEXT:    # xmm0 = xmm0[0,0]6341; X64-AVX512-NEXT:    vmovaps %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x07]6342; X64-AVX512-NEXT:    retq # encoding: [0xc3]6343;6344; X32-SSE-LABEL: test_mm_store_pd1:6345; X32-SSE:       # %bb.0:6346; X32-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]6347; X32-SSE-NEXT:    # xmm0 = xmm0[0,0]6348; X32-SSE-NEXT:    movaps %xmm0, (%edi) # encoding: [0x67,0x0f,0x29,0x07]6349; X32-SSE-NEXT:    retq # encoding: [0xc3]6350;6351; X32-AVX1-LABEL: test_mm_store_pd1:6352; X32-AVX1:       # %bb.0:6353; X32-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]6354; X32-AVX1-NEXT:    # xmm0 = xmm0[0,0]6355; X32-AVX1-NEXT:    vmovaps %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x29,0x07]6356; X32-AVX1-NEXT:    retq # encoding: [0xc3]6357;6358; X32-AVX512-LABEL: test_mm_store_pd1:6359; X32-AVX512:       # %bb.0:6360; X32-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]6361; X32-AVX512-NEXT:    # xmm0 = xmm0[0,0]6362; X32-AVX512-NEXT:    vmovaps %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x29,0x07]6363; X32-AVX512-NEXT:    retq # encoding: [0xc3]6364  %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer6365  store <2 x double> %shuf, ptr %a0, align 166366  ret void6367}6368 6369define void @test_mm_store_sd(ptr%a0, <2 x double> %a1) {6370; X86-SSE-LABEL: test_mm_store_sd:6371; X86-SSE:       # %bb.0:6372; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6373; X86-SSE-NEXT:    movsd %xmm0, (%eax) # encoding: [0xf2,0x0f,0x11,0x00]6374; X86-SSE-NEXT:    retl # encoding: [0xc3]6375;6376; X86-AVX1-LABEL: test_mm_store_sd:6377; X86-AVX1:       # %bb.0:6378; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6379; X86-AVX1-NEXT:    vmovsd %xmm0, (%eax) # encoding: [0xc5,0xfb,0x11,0x00]6380; X86-AVX1-NEXT:    retl # encoding: [0xc3]6381;6382; X86-AVX512-LABEL: test_mm_store_sd:6383; X86-AVX512:       # %bb.0:6384; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6385; X86-AVX512-NEXT:    vmovsd %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x00]6386; X86-AVX512-NEXT:    retl # encoding: [0xc3]6387;6388; X64-SSE-LABEL: test_mm_store_sd:6389; X64-SSE:       # %bb.0:6390; X64-SSE-NEXT:    movsd %xmm0, (%rdi) # encoding: [0xf2,0x0f,0x11,0x07]6391; X64-SSE-NEXT:    retq # encoding: [0xc3]6392;6393; X64-AVX1-LABEL: test_mm_store_sd:6394; X64-AVX1:       # %bb.0:6395; X64-AVX1-NEXT:    vmovsd %xmm0, (%rdi) # encoding: [0xc5,0xfb,0x11,0x07]6396; X64-AVX1-NEXT:    retq # encoding: [0xc3]6397;6398; X64-AVX512-LABEL: test_mm_store_sd:6399; X64-AVX512:       # %bb.0:6400; X64-AVX512-NEXT:    vmovsd %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x07]6401; X64-AVX512-NEXT:    retq # encoding: [0xc3]6402;6403; X32-SSE-LABEL: test_mm_store_sd:6404; X32-SSE:       # %bb.0:6405; X32-SSE-NEXT:    movsd %xmm0, (%edi) # encoding: [0x67,0xf2,0x0f,0x11,0x07]6406; X32-SSE-NEXT:    retq # encoding: [0xc3]6407;6408; X32-AVX1-LABEL: test_mm_store_sd:6409; X32-AVX1:       # %bb.0:6410; X32-AVX1-NEXT:    vmovsd %xmm0, (%edi) # encoding: [0x67,0xc5,0xfb,0x11,0x07]6411; X32-AVX1-NEXT:    retq # encoding: [0xc3]6412;6413; X32-AVX512-LABEL: test_mm_store_sd:6414; X32-AVX512:       # %bb.0:6415; X32-AVX512-NEXT:    vmovsd %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x11,0x07]6416; X32-AVX512-NEXT:    retq # encoding: [0xc3]6417  %ext = extractelement <2 x double> %a1, i32 06418  store double %ext, ptr %a0, align 16419  ret void6420}6421 6422define void @test_mm_store_si128(ptr%a0, <2 x i64> %a1) {6423; X86-SSE-LABEL: test_mm_store_si128:6424; X86-SSE:       # %bb.0:6425; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6426; X86-SSE-NEXT:    movaps %xmm0, (%eax) # encoding: [0x0f,0x29,0x00]6427; X86-SSE-NEXT:    retl # encoding: [0xc3]6428;6429; X86-AVX1-LABEL: test_mm_store_si128:6430; X86-AVX1:       # %bb.0:6431; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6432; X86-AVX1-NEXT:    vmovaps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x29,0x00]6433; X86-AVX1-NEXT:    retl # encoding: [0xc3]6434;6435; X86-AVX512-LABEL: test_mm_store_si128:6436; X86-AVX512:       # %bb.0:6437; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6438; X86-AVX512-NEXT:    vmovaps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x00]6439; X86-AVX512-NEXT:    retl # encoding: [0xc3]6440;6441; X64-SSE-LABEL: test_mm_store_si128:6442; X64-SSE:       # %bb.0:6443; X64-SSE-NEXT:    movaps %xmm0, (%rdi) # encoding: [0x0f,0x29,0x07]6444; X64-SSE-NEXT:    retq # encoding: [0xc3]6445;6446; X64-AVX1-LABEL: test_mm_store_si128:6447; X64-AVX1:       # %bb.0:6448; X64-AVX1-NEXT:    vmovaps %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x29,0x07]6449; X64-AVX1-NEXT:    retq # encoding: [0xc3]6450;6451; X64-AVX512-LABEL: test_mm_store_si128:6452; X64-AVX512:       # %bb.0:6453; X64-AVX512-NEXT:    vmovaps %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x07]6454; X64-AVX512-NEXT:    retq # encoding: [0xc3]6455;6456; X32-SSE-LABEL: test_mm_store_si128:6457; X32-SSE:       # %bb.0:6458; X32-SSE-NEXT:    movaps %xmm0, (%edi) # encoding: [0x67,0x0f,0x29,0x07]6459; X32-SSE-NEXT:    retq # encoding: [0xc3]6460;6461; X32-AVX1-LABEL: test_mm_store_si128:6462; X32-AVX1:       # %bb.0:6463; X32-AVX1-NEXT:    vmovaps %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x29,0x07]6464; X32-AVX1-NEXT:    retq # encoding: [0xc3]6465;6466; X32-AVX512-LABEL: test_mm_store_si128:6467; X32-AVX512:       # %bb.0:6468; X32-AVX512-NEXT:    vmovaps %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x29,0x07]6469; X32-AVX512-NEXT:    retq # encoding: [0xc3]6470  store <2 x i64> %a1, ptr %a0, align 166471  ret void6472}6473 6474define void @test_mm_store1_pd(ptr%a0, <2 x double> %a1) {6475; X86-SSE-LABEL: test_mm_store1_pd:6476; X86-SSE:       # %bb.0:6477; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6478; X86-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]6479; X86-SSE-NEXT:    # xmm0 = xmm0[0,0]6480; X86-SSE-NEXT:    movaps %xmm0, (%eax) # encoding: [0x0f,0x29,0x00]6481; X86-SSE-NEXT:    retl # encoding: [0xc3]6482;6483; X86-AVX1-LABEL: test_mm_store1_pd:6484; X86-AVX1:       # %bb.0:6485; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6486; X86-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]6487; X86-AVX1-NEXT:    # xmm0 = xmm0[0,0]6488; X86-AVX1-NEXT:    vmovaps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x29,0x00]6489; X86-AVX1-NEXT:    retl # encoding: [0xc3]6490;6491; X86-AVX512-LABEL: test_mm_store1_pd:6492; X86-AVX512:       # %bb.0:6493; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6494; X86-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]6495; X86-AVX512-NEXT:    # xmm0 = xmm0[0,0]6496; X86-AVX512-NEXT:    vmovaps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x00]6497; X86-AVX512-NEXT:    retl # encoding: [0xc3]6498;6499; X64-SSE-LABEL: test_mm_store1_pd:6500; X64-SSE:       # %bb.0:6501; X64-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]6502; X64-SSE-NEXT:    # xmm0 = xmm0[0,0]6503; X64-SSE-NEXT:    movaps %xmm0, (%rdi) # encoding: [0x0f,0x29,0x07]6504; X64-SSE-NEXT:    retq # encoding: [0xc3]6505;6506; X64-AVX1-LABEL: test_mm_store1_pd:6507; X64-AVX1:       # %bb.0:6508; X64-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]6509; X64-AVX1-NEXT:    # xmm0 = xmm0[0,0]6510; X64-AVX1-NEXT:    vmovaps %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x29,0x07]6511; X64-AVX1-NEXT:    retq # encoding: [0xc3]6512;6513; X64-AVX512-LABEL: test_mm_store1_pd:6514; X64-AVX512:       # %bb.0:6515; X64-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]6516; X64-AVX512-NEXT:    # xmm0 = xmm0[0,0]6517; X64-AVX512-NEXT:    vmovaps %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x29,0x07]6518; X64-AVX512-NEXT:    retq # encoding: [0xc3]6519;6520; X32-SSE-LABEL: test_mm_store1_pd:6521; X32-SSE:       # %bb.0:6522; X32-SSE-NEXT:    movlhps %xmm0, %xmm0 # encoding: [0x0f,0x16,0xc0]6523; X32-SSE-NEXT:    # xmm0 = xmm0[0,0]6524; X32-SSE-NEXT:    movaps %xmm0, (%edi) # encoding: [0x67,0x0f,0x29,0x07]6525; X32-SSE-NEXT:    retq # encoding: [0xc3]6526;6527; X32-AVX1-LABEL: test_mm_store1_pd:6528; X32-AVX1:       # %bb.0:6529; X32-AVX1-NEXT:    vmovddup %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x12,0xc0]6530; X32-AVX1-NEXT:    # xmm0 = xmm0[0,0]6531; X32-AVX1-NEXT:    vmovaps %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x29,0x07]6532; X32-AVX1-NEXT:    retq # encoding: [0xc3]6533;6534; X32-AVX512-LABEL: test_mm_store1_pd:6535; X32-AVX512:       # %bb.0:6536; X32-AVX512-NEXT:    vmovddup %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x12,0xc0]6537; X32-AVX512-NEXT:    # xmm0 = xmm0[0,0]6538; X32-AVX512-NEXT:    vmovaps %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x29,0x07]6539; X32-AVX512-NEXT:    retq # encoding: [0xc3]6540  %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer6541  store <2 x double> %shuf, ptr %a0, align 166542  ret void6543}6544 6545define void @test_mm_storeh_sd(ptr%a0, <2 x double> %a1) {6546; X86-SSE-LABEL: test_mm_storeh_sd:6547; X86-SSE:       # %bb.0:6548; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6549; X86-SSE-NEXT:    movhlps %xmm0, %xmm0 # encoding: [0x0f,0x12,0xc0]6550; X86-SSE-NEXT:    # xmm0 = xmm0[1,1]6551; X86-SSE-NEXT:    movsd %xmm0, (%eax) # encoding: [0xf2,0x0f,0x11,0x00]6552; X86-SSE-NEXT:    retl # encoding: [0xc3]6553;6554; X86-AVX1-LABEL: test_mm_storeh_sd:6555; X86-AVX1:       # %bb.0:6556; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6557; X86-AVX1-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6558; X86-AVX1-NEXT:    # xmm0 = xmm0[1,0]6559; X86-AVX1-NEXT:    vmovsd %xmm0, (%eax) # encoding: [0xc5,0xfb,0x11,0x00]6560; X86-AVX1-NEXT:    retl # encoding: [0xc3]6561;6562; X86-AVX512-LABEL: test_mm_storeh_sd:6563; X86-AVX512:       # %bb.0:6564; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6565; X86-AVX512-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6566; X86-AVX512-NEXT:    # xmm0 = xmm0[1,0]6567; X86-AVX512-NEXT:    vmovsd %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x00]6568; X86-AVX512-NEXT:    retl # encoding: [0xc3]6569;6570; X64-SSE-LABEL: test_mm_storeh_sd:6571; X64-SSE:       # %bb.0:6572; X64-SSE-NEXT:    movhlps %xmm0, %xmm0 # encoding: [0x0f,0x12,0xc0]6573; X64-SSE-NEXT:    # xmm0 = xmm0[1,1]6574; X64-SSE-NEXT:    movsd %xmm0, (%rdi) # encoding: [0xf2,0x0f,0x11,0x07]6575; X64-SSE-NEXT:    retq # encoding: [0xc3]6576;6577; X64-AVX1-LABEL: test_mm_storeh_sd:6578; X64-AVX1:       # %bb.0:6579; X64-AVX1-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6580; X64-AVX1-NEXT:    # xmm0 = xmm0[1,0]6581; X64-AVX1-NEXT:    vmovsd %xmm0, (%rdi) # encoding: [0xc5,0xfb,0x11,0x07]6582; X64-AVX1-NEXT:    retq # encoding: [0xc3]6583;6584; X64-AVX512-LABEL: test_mm_storeh_sd:6585; X64-AVX512:       # %bb.0:6586; X64-AVX512-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6587; X64-AVX512-NEXT:    # xmm0 = xmm0[1,0]6588; X64-AVX512-NEXT:    vmovsd %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x07]6589; X64-AVX512-NEXT:    retq # encoding: [0xc3]6590;6591; X32-SSE-LABEL: test_mm_storeh_sd:6592; X32-SSE:       # %bb.0:6593; X32-SSE-NEXT:    movhlps %xmm0, %xmm0 # encoding: [0x0f,0x12,0xc0]6594; X32-SSE-NEXT:    # xmm0 = xmm0[1,1]6595; X32-SSE-NEXT:    movsd %xmm0, (%edi) # encoding: [0x67,0xf2,0x0f,0x11,0x07]6596; X32-SSE-NEXT:    retq # encoding: [0xc3]6597;6598; X32-AVX1-LABEL: test_mm_storeh_sd:6599; X32-AVX1:       # %bb.0:6600; X32-AVX1-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6601; X32-AVX1-NEXT:    # xmm0 = xmm0[1,0]6602; X32-AVX1-NEXT:    vmovsd %xmm0, (%edi) # encoding: [0x67,0xc5,0xfb,0x11,0x07]6603; X32-AVX1-NEXT:    retq # encoding: [0xc3]6604;6605; X32-AVX512-LABEL: test_mm_storeh_sd:6606; X32-AVX512:       # %bb.0:6607; X32-AVX512-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6608; X32-AVX512-NEXT:    # xmm0 = xmm0[1,0]6609; X32-AVX512-NEXT:    vmovsd %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x11,0x07]6610; X32-AVX512-NEXT:    retq # encoding: [0xc3]6611  %ext = extractelement <2 x double> %a1, i32 16612  store double %ext, ptr %a0, align 86613  ret void6614}6615 6616define void @test_mm_storel_epi64(ptr%a0, <2 x i64> %a1) {6617; X86-SSE-LABEL: test_mm_storel_epi64:6618; X86-SSE:       # %bb.0:6619; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6620; X86-SSE-NEXT:    movlps %xmm0, (%eax) # encoding: [0x0f,0x13,0x00]6621; X86-SSE-NEXT:    retl # encoding: [0xc3]6622;6623; X86-AVX1-LABEL: test_mm_storel_epi64:6624; X86-AVX1:       # %bb.0:6625; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6626; X86-AVX1-NEXT:    vmovlps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x13,0x00]6627; X86-AVX1-NEXT:    retl # encoding: [0xc3]6628;6629; X86-AVX512-LABEL: test_mm_storel_epi64:6630; X86-AVX512:       # %bb.0:6631; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6632; X86-AVX512-NEXT:    vmovlps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x13,0x00]6633; X86-AVX512-NEXT:    retl # encoding: [0xc3]6634;6635; X64-SSE-LABEL: test_mm_storel_epi64:6636; X64-SSE:       # %bb.0:6637; X64-SSE-NEXT:    movq %xmm0, %rax # encoding: [0x66,0x48,0x0f,0x7e,0xc0]6638; X64-SSE-NEXT:    movq %rax, (%rdi) # encoding: [0x48,0x89,0x07]6639; X64-SSE-NEXT:    retq # encoding: [0xc3]6640;6641; X64-AVX1-LABEL: test_mm_storel_epi64:6642; X64-AVX1:       # %bb.0:6643; X64-AVX1-NEXT:    vmovq %xmm0, %rax # encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6644; X64-AVX1-NEXT:    movq %rax, (%rdi) # encoding: [0x48,0x89,0x07]6645; X64-AVX1-NEXT:    retq # encoding: [0xc3]6646;6647; X64-AVX512-LABEL: test_mm_storel_epi64:6648; X64-AVX512:       # %bb.0:6649; X64-AVX512-NEXT:    vmovq %xmm0, %rax # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6650; X64-AVX512-NEXT:    movq %rax, (%rdi) # encoding: [0x48,0x89,0x07]6651; X64-AVX512-NEXT:    retq # encoding: [0xc3]6652;6653; X32-SSE-LABEL: test_mm_storel_epi64:6654; X32-SSE:       # %bb.0:6655; X32-SSE-NEXT:    movq %xmm0, %rax # encoding: [0x66,0x48,0x0f,0x7e,0xc0]6656; X32-SSE-NEXT:    movq %rax, (%edi) # encoding: [0x67,0x48,0x89,0x07]6657; X32-SSE-NEXT:    retq # encoding: [0xc3]6658;6659; X32-AVX1-LABEL: test_mm_storel_epi64:6660; X32-AVX1:       # %bb.0:6661; X32-AVX1-NEXT:    vmovq %xmm0, %rax # encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6662; X32-AVX1-NEXT:    movq %rax, (%edi) # encoding: [0x67,0x48,0x89,0x07]6663; X32-AVX1-NEXT:    retq # encoding: [0xc3]6664;6665; X32-AVX512-LABEL: test_mm_storel_epi64:6666; X32-AVX512:       # %bb.0:6667; X32-AVX512-NEXT:    vmovq %xmm0, %rax # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6668; X32-AVX512-NEXT:    movq %rax, (%edi) # encoding: [0x67,0x48,0x89,0x07]6669; X32-AVX512-NEXT:    retq # encoding: [0xc3]6670  %ext = extractelement <2 x i64> %a1, i32 06671  %bc = bitcast ptr%a0 to ptr6672  store i64 %ext, ptr %bc, align 86673  ret void6674}6675 6676define void @test_mm_storel_sd(ptr%a0, <2 x double> %a1) {6677; X86-SSE-LABEL: test_mm_storel_sd:6678; X86-SSE:       # %bb.0:6679; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6680; X86-SSE-NEXT:    movsd %xmm0, (%eax) # encoding: [0xf2,0x0f,0x11,0x00]6681; X86-SSE-NEXT:    retl # encoding: [0xc3]6682;6683; X86-AVX1-LABEL: test_mm_storel_sd:6684; X86-AVX1:       # %bb.0:6685; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6686; X86-AVX1-NEXT:    vmovsd %xmm0, (%eax) # encoding: [0xc5,0xfb,0x11,0x00]6687; X86-AVX1-NEXT:    retl # encoding: [0xc3]6688;6689; X86-AVX512-LABEL: test_mm_storel_sd:6690; X86-AVX512:       # %bb.0:6691; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6692; X86-AVX512-NEXT:    vmovsd %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x00]6693; X86-AVX512-NEXT:    retl # encoding: [0xc3]6694;6695; X64-SSE-LABEL: test_mm_storel_sd:6696; X64-SSE:       # %bb.0:6697; X64-SSE-NEXT:    movsd %xmm0, (%rdi) # encoding: [0xf2,0x0f,0x11,0x07]6698; X64-SSE-NEXT:    retq # encoding: [0xc3]6699;6700; X64-AVX1-LABEL: test_mm_storel_sd:6701; X64-AVX1:       # %bb.0:6702; X64-AVX1-NEXT:    vmovsd %xmm0, (%rdi) # encoding: [0xc5,0xfb,0x11,0x07]6703; X64-AVX1-NEXT:    retq # encoding: [0xc3]6704;6705; X64-AVX512-LABEL: test_mm_storel_sd:6706; X64-AVX512:       # %bb.0:6707; X64-AVX512-NEXT:    vmovsd %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x07]6708; X64-AVX512-NEXT:    retq # encoding: [0xc3]6709;6710; X32-SSE-LABEL: test_mm_storel_sd:6711; X32-SSE:       # %bb.0:6712; X32-SSE-NEXT:    movsd %xmm0, (%edi) # encoding: [0x67,0xf2,0x0f,0x11,0x07]6713; X32-SSE-NEXT:    retq # encoding: [0xc3]6714;6715; X32-AVX1-LABEL: test_mm_storel_sd:6716; X32-AVX1:       # %bb.0:6717; X32-AVX1-NEXT:    vmovsd %xmm0, (%edi) # encoding: [0x67,0xc5,0xfb,0x11,0x07]6718; X32-AVX1-NEXT:    retq # encoding: [0xc3]6719;6720; X32-AVX512-LABEL: test_mm_storel_sd:6721; X32-AVX512:       # %bb.0:6722; X32-AVX512-NEXT:    vmovsd %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xfb,0x11,0x07]6723; X32-AVX512-NEXT:    retq # encoding: [0xc3]6724  %ext = extractelement <2 x double> %a1, i32 06725  store double %ext, ptr %a0, align 86726  ret void6727}6728 6729define void @test_mm_storer_pd(ptr%a0, <2 x double> %a1) {6730; X86-SSE-LABEL: test_mm_storer_pd:6731; X86-SSE:       # %bb.0:6732; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6733; X86-SSE-NEXT:    shufps $78, %xmm0, %xmm0 # encoding: [0x0f,0xc6,0xc0,0x4e]6734; X86-SSE-NEXT:    # xmm0 = xmm0[2,3,0,1]6735; X86-SSE-NEXT:    movaps %xmm0, (%eax) # encoding: [0x0f,0x29,0x00]6736; X86-SSE-NEXT:    retl # encoding: [0xc3]6737;6738; X86-AVX1-LABEL: test_mm_storer_pd:6739; X86-AVX1:       # %bb.0:6740; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6741; X86-AVX1-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6742; X86-AVX1-NEXT:    # xmm0 = xmm0[1,0]6743; X86-AVX1-NEXT:    vmovapd %xmm0, (%eax) # encoding: [0xc5,0xf9,0x29,0x00]6744; X86-AVX1-NEXT:    retl # encoding: [0xc3]6745;6746; X86-AVX512-LABEL: test_mm_storer_pd:6747; X86-AVX512:       # %bb.0:6748; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6749; X86-AVX512-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6750; X86-AVX512-NEXT:    # xmm0 = xmm0[1,0]6751; X86-AVX512-NEXT:    vmovapd %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x29,0x00]6752; X86-AVX512-NEXT:    retl # encoding: [0xc3]6753;6754; X64-SSE-LABEL: test_mm_storer_pd:6755; X64-SSE:       # %bb.0:6756; X64-SSE-NEXT:    shufps $78, %xmm0, %xmm0 # encoding: [0x0f,0xc6,0xc0,0x4e]6757; X64-SSE-NEXT:    # xmm0 = xmm0[2,3,0,1]6758; X64-SSE-NEXT:    movaps %xmm0, (%rdi) # encoding: [0x0f,0x29,0x07]6759; X64-SSE-NEXT:    retq # encoding: [0xc3]6760;6761; X64-AVX1-LABEL: test_mm_storer_pd:6762; X64-AVX1:       # %bb.0:6763; X64-AVX1-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6764; X64-AVX1-NEXT:    # xmm0 = xmm0[1,0]6765; X64-AVX1-NEXT:    vmovapd %xmm0, (%rdi) # encoding: [0xc5,0xf9,0x29,0x07]6766; X64-AVX1-NEXT:    retq # encoding: [0xc3]6767;6768; X64-AVX512-LABEL: test_mm_storer_pd:6769; X64-AVX512:       # %bb.0:6770; X64-AVX512-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6771; X64-AVX512-NEXT:    # xmm0 = xmm0[1,0]6772; X64-AVX512-NEXT:    vmovapd %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x29,0x07]6773; X64-AVX512-NEXT:    retq # encoding: [0xc3]6774;6775; X32-SSE-LABEL: test_mm_storer_pd:6776; X32-SSE:       # %bb.0:6777; X32-SSE-NEXT:    shufps $78, %xmm0, %xmm0 # encoding: [0x0f,0xc6,0xc0,0x4e]6778; X32-SSE-NEXT:    # xmm0 = xmm0[2,3,0,1]6779; X32-SSE-NEXT:    movaps %xmm0, (%edi) # encoding: [0x67,0x0f,0x29,0x07]6780; X32-SSE-NEXT:    retq # encoding: [0xc3]6781;6782; X32-AVX1-LABEL: test_mm_storer_pd:6783; X32-AVX1:       # %bb.0:6784; X32-AVX1-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6785; X32-AVX1-NEXT:    # xmm0 = xmm0[1,0]6786; X32-AVX1-NEXT:    vmovapd %xmm0, (%edi) # encoding: [0x67,0xc5,0xf9,0x29,0x07]6787; X32-AVX1-NEXT:    retq # encoding: [0xc3]6788;6789; X32-AVX512-LABEL: test_mm_storer_pd:6790; X32-AVX512:       # %bb.0:6791; X32-AVX512-NEXT:    vshufpd $1, %xmm0, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xc6,0xc0,0x01]6792; X32-AVX512-NEXT:    # xmm0 = xmm0[1,0]6793; X32-AVX512-NEXT:    vmovapd %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf9,0x29,0x07]6794; X32-AVX512-NEXT:    retq # encoding: [0xc3]6795  %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> <i32 1, i32 0>6796  store <2 x double> %shuf, ptr %a0, align 166797  ret void6798}6799 6800define void @test_mm_storeu_pd(ptr%a0, <2 x double> %a1) {6801; X86-SSE-LABEL: test_mm_storeu_pd:6802; X86-SSE:       # %bb.0:6803; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6804; X86-SSE-NEXT:    movups %xmm0, (%eax) # encoding: [0x0f,0x11,0x00]6805; X86-SSE-NEXT:    retl # encoding: [0xc3]6806;6807; X86-AVX1-LABEL: test_mm_storeu_pd:6808; X86-AVX1:       # %bb.0:6809; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6810; X86-AVX1-NEXT:    vmovups %xmm0, (%eax) # encoding: [0xc5,0xf8,0x11,0x00]6811; X86-AVX1-NEXT:    retl # encoding: [0xc3]6812;6813; X86-AVX512-LABEL: test_mm_storeu_pd:6814; X86-AVX512:       # %bb.0:6815; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6816; X86-AVX512-NEXT:    vmovups %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x11,0x00]6817; X86-AVX512-NEXT:    retl # encoding: [0xc3]6818;6819; X64-SSE-LABEL: test_mm_storeu_pd:6820; X64-SSE:       # %bb.0:6821; X64-SSE-NEXT:    movups %xmm0, (%rdi) # encoding: [0x0f,0x11,0x07]6822; X64-SSE-NEXT:    retq # encoding: [0xc3]6823;6824; X64-AVX1-LABEL: test_mm_storeu_pd:6825; X64-AVX1:       # %bb.0:6826; X64-AVX1-NEXT:    vmovups %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x11,0x07]6827; X64-AVX1-NEXT:    retq # encoding: [0xc3]6828;6829; X64-AVX512-LABEL: test_mm_storeu_pd:6830; X64-AVX512:       # %bb.0:6831; X64-AVX512-NEXT:    vmovups %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x11,0x07]6832; X64-AVX512-NEXT:    retq # encoding: [0xc3]6833;6834; X32-SSE-LABEL: test_mm_storeu_pd:6835; X32-SSE:       # %bb.0:6836; X32-SSE-NEXT:    movups %xmm0, (%edi) # encoding: [0x67,0x0f,0x11,0x07]6837; X32-SSE-NEXT:    retq # encoding: [0xc3]6838;6839; X32-AVX1-LABEL: test_mm_storeu_pd:6840; X32-AVX1:       # %bb.0:6841; X32-AVX1-NEXT:    vmovups %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x11,0x07]6842; X32-AVX1-NEXT:    retq # encoding: [0xc3]6843;6844; X32-AVX512-LABEL: test_mm_storeu_pd:6845; X32-AVX512:       # %bb.0:6846; X32-AVX512-NEXT:    vmovups %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x11,0x07]6847; X32-AVX512-NEXT:    retq # encoding: [0xc3]6848  store <2 x double> %a1, ptr %a0, align 16849  ret void6850}6851 6852define void @test_mm_storeu_si128(ptr%a0, <2 x i64> %a1) {6853; X86-SSE-LABEL: test_mm_storeu_si128:6854; X86-SSE:       # %bb.0:6855; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6856; X86-SSE-NEXT:    movups %xmm0, (%eax) # encoding: [0x0f,0x11,0x00]6857; X86-SSE-NEXT:    retl # encoding: [0xc3]6858;6859; X86-AVX1-LABEL: test_mm_storeu_si128:6860; X86-AVX1:       # %bb.0:6861; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6862; X86-AVX1-NEXT:    vmovups %xmm0, (%eax) # encoding: [0xc5,0xf8,0x11,0x00]6863; X86-AVX1-NEXT:    retl # encoding: [0xc3]6864;6865; X86-AVX512-LABEL: test_mm_storeu_si128:6866; X86-AVX512:       # %bb.0:6867; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6868; X86-AVX512-NEXT:    vmovups %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x11,0x00]6869; X86-AVX512-NEXT:    retl # encoding: [0xc3]6870;6871; X64-SSE-LABEL: test_mm_storeu_si128:6872; X64-SSE:       # %bb.0:6873; X64-SSE-NEXT:    movups %xmm0, (%rdi) # encoding: [0x0f,0x11,0x07]6874; X64-SSE-NEXT:    retq # encoding: [0xc3]6875;6876; X64-AVX1-LABEL: test_mm_storeu_si128:6877; X64-AVX1:       # %bb.0:6878; X64-AVX1-NEXT:    vmovups %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x11,0x07]6879; X64-AVX1-NEXT:    retq # encoding: [0xc3]6880;6881; X64-AVX512-LABEL: test_mm_storeu_si128:6882; X64-AVX512:       # %bb.0:6883; X64-AVX512-NEXT:    vmovups %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x11,0x07]6884; X64-AVX512-NEXT:    retq # encoding: [0xc3]6885;6886; X32-SSE-LABEL: test_mm_storeu_si128:6887; X32-SSE:       # %bb.0:6888; X32-SSE-NEXT:    movups %xmm0, (%edi) # encoding: [0x67,0x0f,0x11,0x07]6889; X32-SSE-NEXT:    retq # encoding: [0xc3]6890;6891; X32-AVX1-LABEL: test_mm_storeu_si128:6892; X32-AVX1:       # %bb.0:6893; X32-AVX1-NEXT:    vmovups %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x11,0x07]6894; X32-AVX1-NEXT:    retq # encoding: [0xc3]6895;6896; X32-AVX512-LABEL: test_mm_storeu_si128:6897; X32-AVX512:       # %bb.0:6898; X32-AVX512-NEXT:    vmovups %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x11,0x07]6899; X32-AVX512-NEXT:    retq # encoding: [0xc3]6900  store <2 x i64> %a1, ptr %a0, align 16901  ret void6902}6903 6904define void @test_mm_storeu_si64(ptr nocapture %A, <2 x i64> %B) {6905; X86-SSE-LABEL: test_mm_storeu_si64:6906; X86-SSE:       # %bb.0: # %entry6907; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6908; X86-SSE-NEXT:    movlps %xmm0, (%eax) # encoding: [0x0f,0x13,0x00]6909; X86-SSE-NEXT:    retl # encoding: [0xc3]6910;6911; X86-AVX1-LABEL: test_mm_storeu_si64:6912; X86-AVX1:       # %bb.0: # %entry6913; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6914; X86-AVX1-NEXT:    vmovlps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x13,0x00]6915; X86-AVX1-NEXT:    retl # encoding: [0xc3]6916;6917; X86-AVX512-LABEL: test_mm_storeu_si64:6918; X86-AVX512:       # %bb.0: # %entry6919; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6920; X86-AVX512-NEXT:    vmovlps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x13,0x00]6921; X86-AVX512-NEXT:    retl # encoding: [0xc3]6922;6923; X64-SSE-LABEL: test_mm_storeu_si64:6924; X64-SSE:       # %bb.0: # %entry6925; X64-SSE-NEXT:    movq %xmm0, %rax # encoding: [0x66,0x48,0x0f,0x7e,0xc0]6926; X64-SSE-NEXT:    movq %rax, (%rdi) # encoding: [0x48,0x89,0x07]6927; X64-SSE-NEXT:    retq # encoding: [0xc3]6928;6929; X64-AVX1-LABEL: test_mm_storeu_si64:6930; X64-AVX1:       # %bb.0: # %entry6931; X64-AVX1-NEXT:    vmovq %xmm0, %rax # encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6932; X64-AVX1-NEXT:    movq %rax, (%rdi) # encoding: [0x48,0x89,0x07]6933; X64-AVX1-NEXT:    retq # encoding: [0xc3]6934;6935; X64-AVX512-LABEL: test_mm_storeu_si64:6936; X64-AVX512:       # %bb.0: # %entry6937; X64-AVX512-NEXT:    vmovq %xmm0, %rax # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6938; X64-AVX512-NEXT:    movq %rax, (%rdi) # encoding: [0x48,0x89,0x07]6939; X64-AVX512-NEXT:    retq # encoding: [0xc3]6940;6941; X32-SSE-LABEL: test_mm_storeu_si64:6942; X32-SSE:       # %bb.0: # %entry6943; X32-SSE-NEXT:    movq %xmm0, %rax # encoding: [0x66,0x48,0x0f,0x7e,0xc0]6944; X32-SSE-NEXT:    movq %rax, (%edi) # encoding: [0x67,0x48,0x89,0x07]6945; X32-SSE-NEXT:    retq # encoding: [0xc3]6946;6947; X32-AVX1-LABEL: test_mm_storeu_si64:6948; X32-AVX1:       # %bb.0: # %entry6949; X32-AVX1-NEXT:    vmovq %xmm0, %rax # encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6950; X32-AVX1-NEXT:    movq %rax, (%edi) # encoding: [0x67,0x48,0x89,0x07]6951; X32-AVX1-NEXT:    retq # encoding: [0xc3]6952;6953; X32-AVX512-LABEL: test_mm_storeu_si64:6954; X32-AVX512:       # %bb.0: # %entry6955; X32-AVX512-NEXT:    vmovq %xmm0, %rax # EVEX TO VEX Compression encoding: [0xc4,0xe1,0xf9,0x7e,0xc0]6956; X32-AVX512-NEXT:    movq %rax, (%edi) # encoding: [0x67,0x48,0x89,0x07]6957; X32-AVX512-NEXT:    retq # encoding: [0xc3]6958entry:6959  %vecext.i = extractelement <2 x i64> %B, i32 06960  store i64 %vecext.i, ptr %A, align 16961  ret void6962}6963 6964define void @test_mm_storeu_si32(ptr nocapture %A, <2 x i64> %B) {6965; X86-SSE-LABEL: test_mm_storeu_si32:6966; X86-SSE:       # %bb.0: # %entry6967; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6968; X86-SSE-NEXT:    movd %xmm0, %ecx # encoding: [0x66,0x0f,0x7e,0xc1]6969; X86-SSE-NEXT:    movl %ecx, (%eax) # encoding: [0x89,0x08]6970; X86-SSE-NEXT:    retl # encoding: [0xc3]6971;6972; X86-AVX1-LABEL: test_mm_storeu_si32:6973; X86-AVX1:       # %bb.0: # %entry6974; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6975; X86-AVX1-NEXT:    vmovd %xmm0, %ecx # encoding: [0xc5,0xf9,0x7e,0xc1]6976; X86-AVX1-NEXT:    movl %ecx, (%eax) # encoding: [0x89,0x08]6977; X86-AVX1-NEXT:    retl # encoding: [0xc3]6978;6979; X86-AVX512-LABEL: test_mm_storeu_si32:6980; X86-AVX512:       # %bb.0: # %entry6981; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]6982; X86-AVX512-NEXT:    vmovd %xmm0, %ecx # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc1]6983; X86-AVX512-NEXT:    movl %ecx, (%eax) # encoding: [0x89,0x08]6984; X86-AVX512-NEXT:    retl # encoding: [0xc3]6985;6986; X64-SSE-LABEL: test_mm_storeu_si32:6987; X64-SSE:       # %bb.0: # %entry6988; X64-SSE-NEXT:    movd %xmm0, %eax # encoding: [0x66,0x0f,0x7e,0xc0]6989; X64-SSE-NEXT:    movl %eax, (%rdi) # encoding: [0x89,0x07]6990; X64-SSE-NEXT:    retq # encoding: [0xc3]6991;6992; X64-AVX1-LABEL: test_mm_storeu_si32:6993; X64-AVX1:       # %bb.0: # %entry6994; X64-AVX1-NEXT:    vmovd %xmm0, %eax # encoding: [0xc5,0xf9,0x7e,0xc0]6995; X64-AVX1-NEXT:    movl %eax, (%rdi) # encoding: [0x89,0x07]6996; X64-AVX1-NEXT:    retq # encoding: [0xc3]6997;6998; X64-AVX512-LABEL: test_mm_storeu_si32:6999; X64-AVX512:       # %bb.0: # %entry7000; X64-AVX512-NEXT:    vmovd %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc0]7001; X64-AVX512-NEXT:    movl %eax, (%rdi) # encoding: [0x89,0x07]7002; X64-AVX512-NEXT:    retq # encoding: [0xc3]7003;7004; X32-SSE-LABEL: test_mm_storeu_si32:7005; X32-SSE:       # %bb.0: # %entry7006; X32-SSE-NEXT:    movd %xmm0, %eax # encoding: [0x66,0x0f,0x7e,0xc0]7007; X32-SSE-NEXT:    movl %eax, (%edi) # encoding: [0x67,0x89,0x07]7008; X32-SSE-NEXT:    retq # encoding: [0xc3]7009;7010; X32-AVX1-LABEL: test_mm_storeu_si32:7011; X32-AVX1:       # %bb.0: # %entry7012; X32-AVX1-NEXT:    vmovd %xmm0, %eax # encoding: [0xc5,0xf9,0x7e,0xc0]7013; X32-AVX1-NEXT:    movl %eax, (%edi) # encoding: [0x67,0x89,0x07]7014; X32-AVX1-NEXT:    retq # encoding: [0xc3]7015;7016; X32-AVX512-LABEL: test_mm_storeu_si32:7017; X32-AVX512:       # %bb.0: # %entry7018; X32-AVX512-NEXT:    vmovd %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc0]7019; X32-AVX512-NEXT:    movl %eax, (%edi) # encoding: [0x67,0x89,0x07]7020; X32-AVX512-NEXT:    retq # encoding: [0xc3]7021entry:7022  %0 = bitcast <2 x i64> %B to <4 x i32>7023  %vecext.i = extractelement <4 x i32> %0, i32 07024  store i32 %vecext.i, ptr %A, align 17025  ret void7026}7027 7028define void @test_mm_storeu_si16(ptr nocapture %A, <2 x i64> %B) {7029; X86-SSE-LABEL: test_mm_storeu_si16:7030; X86-SSE:       # %bb.0: # %entry7031; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7032; X86-SSE-NEXT:    movd %xmm0, %ecx # encoding: [0x66,0x0f,0x7e,0xc1]7033; X86-SSE-NEXT:    movw %cx, (%eax) # encoding: [0x66,0x89,0x08]7034; X86-SSE-NEXT:    retl # encoding: [0xc3]7035;7036; X86-AVX1-LABEL: test_mm_storeu_si16:7037; X86-AVX1:       # %bb.0: # %entry7038; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7039; X86-AVX1-NEXT:    vmovd %xmm0, %ecx # encoding: [0xc5,0xf9,0x7e,0xc1]7040; X86-AVX1-NEXT:    movw %cx, (%eax) # encoding: [0x66,0x89,0x08]7041; X86-AVX1-NEXT:    retl # encoding: [0xc3]7042;7043; X86-AVX512-LABEL: test_mm_storeu_si16:7044; X86-AVX512:       # %bb.0: # %entry7045; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7046; X86-AVX512-NEXT:    vmovd %xmm0, %ecx # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc1]7047; X86-AVX512-NEXT:    movw %cx, (%eax) # encoding: [0x66,0x89,0x08]7048; X86-AVX512-NEXT:    retl # encoding: [0xc3]7049;7050; X64-SSE-LABEL: test_mm_storeu_si16:7051; X64-SSE:       # %bb.0: # %entry7052; X64-SSE-NEXT:    movd %xmm0, %eax # encoding: [0x66,0x0f,0x7e,0xc0]7053; X64-SSE-NEXT:    movw %ax, (%rdi) # encoding: [0x66,0x89,0x07]7054; X64-SSE-NEXT:    retq # encoding: [0xc3]7055;7056; X64-AVX1-LABEL: test_mm_storeu_si16:7057; X64-AVX1:       # %bb.0: # %entry7058; X64-AVX1-NEXT:    vmovd %xmm0, %eax # encoding: [0xc5,0xf9,0x7e,0xc0]7059; X64-AVX1-NEXT:    movw %ax, (%rdi) # encoding: [0x66,0x89,0x07]7060; X64-AVX1-NEXT:    retq # encoding: [0xc3]7061;7062; X64-AVX512-LABEL: test_mm_storeu_si16:7063; X64-AVX512:       # %bb.0: # %entry7064; X64-AVX512-NEXT:    vmovd %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc0]7065; X64-AVX512-NEXT:    movw %ax, (%rdi) # encoding: [0x66,0x89,0x07]7066; X64-AVX512-NEXT:    retq # encoding: [0xc3]7067;7068; X32-SSE-LABEL: test_mm_storeu_si16:7069; X32-SSE:       # %bb.0: # %entry7070; X32-SSE-NEXT:    movd %xmm0, %eax # encoding: [0x66,0x0f,0x7e,0xc0]7071; X32-SSE-NEXT:    movw %ax, (%edi) # encoding: [0x67,0x66,0x89,0x07]7072; X32-SSE-NEXT:    retq # encoding: [0xc3]7073;7074; X32-AVX1-LABEL: test_mm_storeu_si16:7075; X32-AVX1:       # %bb.0: # %entry7076; X32-AVX1-NEXT:    vmovd %xmm0, %eax # encoding: [0xc5,0xf9,0x7e,0xc0]7077; X32-AVX1-NEXT:    movw %ax, (%edi) # encoding: [0x67,0x66,0x89,0x07]7078; X32-AVX1-NEXT:    retq # encoding: [0xc3]7079;7080; X32-AVX512-LABEL: test_mm_storeu_si16:7081; X32-AVX512:       # %bb.0: # %entry7082; X32-AVX512-NEXT:    vmovd %xmm0, %eax # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x7e,0xc0]7083; X32-AVX512-NEXT:    movw %ax, (%edi) # encoding: [0x67,0x66,0x89,0x07]7084; X32-AVX512-NEXT:    retq # encoding: [0xc3]7085entry:7086  %0 = bitcast <2 x i64> %B to <8 x i16>7087  %vecext.i = extractelement <8 x i16> %0, i32 07088  store i16 %vecext.i, ptr %A, align 17089  ret void7090}7091 7092define void @test_mm_stream_pd(ptr%a0, <2 x double> %a1) {7093; X86-SSE-LABEL: test_mm_stream_pd:7094; X86-SSE:       # %bb.0:7095; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7096; X86-SSE-NEXT:    movntps %xmm0, (%eax) # encoding: [0x0f,0x2b,0x00]7097; X86-SSE-NEXT:    retl # encoding: [0xc3]7098;7099; X86-AVX1-LABEL: test_mm_stream_pd:7100; X86-AVX1:       # %bb.0:7101; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7102; X86-AVX1-NEXT:    vmovntps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x2b,0x00]7103; X86-AVX1-NEXT:    retl # encoding: [0xc3]7104;7105; X86-AVX512-LABEL: test_mm_stream_pd:7106; X86-AVX512:       # %bb.0:7107; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7108; X86-AVX512-NEXT:    vmovntps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x2b,0x00]7109; X86-AVX512-NEXT:    retl # encoding: [0xc3]7110;7111; X64-SSE-LABEL: test_mm_stream_pd:7112; X64-SSE:       # %bb.0:7113; X64-SSE-NEXT:    movntps %xmm0, (%rdi) # encoding: [0x0f,0x2b,0x07]7114; X64-SSE-NEXT:    retq # encoding: [0xc3]7115;7116; X64-AVX1-LABEL: test_mm_stream_pd:7117; X64-AVX1:       # %bb.0:7118; X64-AVX1-NEXT:    vmovntps %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x2b,0x07]7119; X64-AVX1-NEXT:    retq # encoding: [0xc3]7120;7121; X64-AVX512-LABEL: test_mm_stream_pd:7122; X64-AVX512:       # %bb.0:7123; X64-AVX512-NEXT:    vmovntps %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x2b,0x07]7124; X64-AVX512-NEXT:    retq # encoding: [0xc3]7125;7126; X32-SSE-LABEL: test_mm_stream_pd:7127; X32-SSE:       # %bb.0:7128; X32-SSE-NEXT:    movntps %xmm0, (%edi) # encoding: [0x67,0x0f,0x2b,0x07]7129; X32-SSE-NEXT:    retq # encoding: [0xc3]7130;7131; X32-AVX1-LABEL: test_mm_stream_pd:7132; X32-AVX1:       # %bb.0:7133; X32-AVX1-NEXT:    vmovntps %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x2b,0x07]7134; X32-AVX1-NEXT:    retq # encoding: [0xc3]7135;7136; X32-AVX512-LABEL: test_mm_stream_pd:7137; X32-AVX512:       # %bb.0:7138; X32-AVX512-NEXT:    vmovntps %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x2b,0x07]7139; X32-AVX512-NEXT:    retq # encoding: [0xc3]7140  store <2 x double> %a1, ptr %a0, align 16, !nontemporal !07141  ret void7142}7143 7144define void @test_mm_stream_si32(ptr%a0, i32 %a1) {7145; X86-LABEL: test_mm_stream_si32:7146; X86:       # %bb.0:7147; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]7148; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx # encoding: [0x8b,0x4c,0x24,0x04]7149; X86-NEXT:    movntil %eax, (%ecx) # encoding: [0x0f,0xc3,0x01]7150; X86-NEXT:    retl # encoding: [0xc3]7151;7152; X64-LABEL: test_mm_stream_si32:7153; X64:       # %bb.0:7154; X64-NEXT:    movntil %esi, (%rdi) # encoding: [0x0f,0xc3,0x37]7155; X64-NEXT:    retq # encoding: [0xc3]7156;7157; X32-LABEL: test_mm_stream_si32:7158; X32:       # %bb.0:7159; X32-NEXT:    movntil %esi, (%edi) # encoding: [0x67,0x0f,0xc3,0x37]7160; X32-NEXT:    retq # encoding: [0xc3]7161  store i32 %a1, ptr %a0, align 1, !nontemporal !07162  ret void7163}7164 7165define void @test_mm_stream_si128(ptr%a0, <2 x i64> %a1) {7166; X86-SSE-LABEL: test_mm_stream_si128:7167; X86-SSE:       # %bb.0:7168; X86-SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7169; X86-SSE-NEXT:    movntps %xmm0, (%eax) # encoding: [0x0f,0x2b,0x00]7170; X86-SSE-NEXT:    retl # encoding: [0xc3]7171;7172; X86-AVX1-LABEL: test_mm_stream_si128:7173; X86-AVX1:       # %bb.0:7174; X86-AVX1-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7175; X86-AVX1-NEXT:    vmovntps %xmm0, (%eax) # encoding: [0xc5,0xf8,0x2b,0x00]7176; X86-AVX1-NEXT:    retl # encoding: [0xc3]7177;7178; X86-AVX512-LABEL: test_mm_stream_si128:7179; X86-AVX512:       # %bb.0:7180; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]7181; X86-AVX512-NEXT:    vmovntps %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x2b,0x00]7182; X86-AVX512-NEXT:    retl # encoding: [0xc3]7183;7184; X64-SSE-LABEL: test_mm_stream_si128:7185; X64-SSE:       # %bb.0:7186; X64-SSE-NEXT:    movntps %xmm0, (%rdi) # encoding: [0x0f,0x2b,0x07]7187; X64-SSE-NEXT:    retq # encoding: [0xc3]7188;7189; X64-AVX1-LABEL: test_mm_stream_si128:7190; X64-AVX1:       # %bb.0:7191; X64-AVX1-NEXT:    vmovntps %xmm0, (%rdi) # encoding: [0xc5,0xf8,0x2b,0x07]7192; X64-AVX1-NEXT:    retq # encoding: [0xc3]7193;7194; X64-AVX512-LABEL: test_mm_stream_si128:7195; X64-AVX512:       # %bb.0:7196; X64-AVX512-NEXT:    vmovntps %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x2b,0x07]7197; X64-AVX512-NEXT:    retq # encoding: [0xc3]7198;7199; X32-SSE-LABEL: test_mm_stream_si128:7200; X32-SSE:       # %bb.0:7201; X32-SSE-NEXT:    movntps %xmm0, (%edi) # encoding: [0x67,0x0f,0x2b,0x07]7202; X32-SSE-NEXT:    retq # encoding: [0xc3]7203;7204; X32-AVX1-LABEL: test_mm_stream_si128:7205; X32-AVX1:       # %bb.0:7206; X32-AVX1-NEXT:    vmovntps %xmm0, (%edi) # encoding: [0x67,0xc5,0xf8,0x2b,0x07]7207; X32-AVX1-NEXT:    retq # encoding: [0xc3]7208;7209; X32-AVX512-LABEL: test_mm_stream_si128:7210; X32-AVX512:       # %bb.0:7211; X32-AVX512-NEXT:    vmovntps %xmm0, (%edi) # EVEX TO VEX Compression encoding: [0x67,0xc5,0xf8,0x2b,0x07]7212; X32-AVX512-NEXT:    retq # encoding: [0xc3]7213  store <2 x i64> %a1, ptr %a0, align 16, !nontemporal !07214  ret void7215}7216 7217define <2 x i64> @test_mm_sub_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {7218; SSE-LABEL: test_mm_sub_epi8:7219; SSE:       # %bb.0:7220; SSE-NEXT:    psubb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf8,0xc1]7221; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7222;7223; AVX1-LABEL: test_mm_sub_epi8:7224; AVX1:       # %bb.0:7225; AVX1-NEXT:    vpsubb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf8,0xc1]7226; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7227;7228; AVX512-LABEL: test_mm_sub_epi8:7229; AVX512:       # %bb.0:7230; AVX512-NEXT:    vpsubb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf8,0xc1]7231; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7232  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>7233  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>7234  %res = sub <16 x i8> %arg0, %arg17235  %bc = bitcast <16 x i8> %res to <2 x i64>7236  ret <2 x i64> %bc7237}7238 7239define <2 x i64> @test_mm_sub_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {7240; SSE-LABEL: test_mm_sub_epi16:7241; SSE:       # %bb.0:7242; SSE-NEXT:    psubw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xf9,0xc1]7243; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7244;7245; AVX1-LABEL: test_mm_sub_epi16:7246; AVX1:       # %bb.0:7247; AVX1-NEXT:    vpsubw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf9,0xc1]7248; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7249;7250; AVX512-LABEL: test_mm_sub_epi16:7251; AVX512:       # %bb.0:7252; AVX512-NEXT:    vpsubw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xf9,0xc1]7253; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7254  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>7255  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>7256  %res = sub <8 x i16> %arg0, %arg17257  %bc = bitcast <8 x i16> %res to <2 x i64>7258  ret <2 x i64> %bc7259}7260 7261define <2 x i64> @test_mm_sub_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind {7262; SSE-LABEL: test_mm_sub_epi32:7263; SSE:       # %bb.0:7264; SSE-NEXT:    psubd %xmm1, %xmm0 # encoding: [0x66,0x0f,0xfa,0xc1]7265; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7266;7267; AVX1-LABEL: test_mm_sub_epi32:7268; AVX1:       # %bb.0:7269; AVX1-NEXT:    vpsubd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfa,0xc1]7270; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7271;7272; AVX512-LABEL: test_mm_sub_epi32:7273; AVX512:       # %bb.0:7274; AVX512-NEXT:    vpsubd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfa,0xc1]7275; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7276  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>7277  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>7278  %res = sub <4 x i32> %arg0, %arg17279  %bc = bitcast <4 x i32> %res to <2 x i64>7280  ret <2 x i64> %bc7281}7282 7283define <2 x i64> @test_mm_sub_epi64(<2 x i64> %a0, <2 x i64> %a1) nounwind {7284; SSE-LABEL: test_mm_sub_epi64:7285; SSE:       # %bb.0:7286; SSE-NEXT:    psubq %xmm1, %xmm0 # encoding: [0x66,0x0f,0xfb,0xc1]7287; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7288;7289; AVX1-LABEL: test_mm_sub_epi64:7290; AVX1:       # %bb.0:7291; AVX1-NEXT:    vpsubq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfb,0xc1]7292; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7293;7294; AVX512-LABEL: test_mm_sub_epi64:7295; AVX512:       # %bb.0:7296; AVX512-NEXT:    vpsubq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfb,0xc1]7297; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7298  %res = sub <2 x i64> %a0, %a17299  ret <2 x i64> %res7300}7301 7302define <2 x double> @test_mm_sub_pd(<2 x double> %a0, <2 x double> %a1) nounwind {7303; SSE-LABEL: test_mm_sub_pd:7304; SSE:       # %bb.0:7305; SSE-NEXT:    subpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x5c,0xc1]7306; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7307;7308; AVX1-LABEL: test_mm_sub_pd:7309; AVX1:       # %bb.0:7310; AVX1-NEXT:    vsubpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x5c,0xc1]7311; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7312;7313; AVX512-LABEL: test_mm_sub_pd:7314; AVX512:       # %bb.0:7315; AVX512-NEXT:    vsubpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x5c,0xc1]7316; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7317  %res = fsub <2 x double> %a0, %a17318  ret <2 x double> %res7319}7320 7321define <2 x double> @test_mm_sub_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7322; SSE-LABEL: test_mm_sub_sd:7323; SSE:       # %bb.0:7324; SSE-NEXT:    subsd %xmm1, %xmm0 # encoding: [0xf2,0x0f,0x5c,0xc1]7325; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7326;7327; AVX1-LABEL: test_mm_sub_sd:7328; AVX1:       # %bb.0:7329; AVX1-NEXT:    vsubsd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xfb,0x5c,0xc1]7330; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7331;7332; AVX512-LABEL: test_mm_sub_sd:7333; AVX512:       # %bb.0:7334; AVX512-NEXT:    vsubsd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x5c,0xc1]7335; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7336  %ext0 = extractelement <2 x double> %a0, i32 07337  %ext1 = extractelement <2 x double> %a1, i32 07338  %fsub = fsub double %ext0, %ext17339  %res = insertelement <2 x double> %a0, double %fsub, i32 07340  ret <2 x double> %res7341}7342 7343define <2 x i64> @test_mm_subs_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind {7344; SSE-LABEL: test_mm_subs_epi8:7345; SSE:       # %bb.0:7346; SSE-NEXT:    psubsb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe8,0xc1]7347; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7348;7349; AVX1-LABEL: test_mm_subs_epi8:7350; AVX1:       # %bb.0:7351; AVX1-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe8,0xc1]7352; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7353;7354; AVX512-LABEL: test_mm_subs_epi8:7355; AVX512:       # %bb.0:7356; AVX512-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe8,0xc1]7357; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7358  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>7359  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>7360  %res = call <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8> %arg0, <16 x i8> %arg1)7361  %bc = bitcast <16 x i8> %res to <2 x i64>7362  ret <2 x i64> %bc7363}7364declare <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8>, <16 x i8>) nounwind readnone7365 7366define <2 x i64> @test_mm_subs_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind {7367; SSE-LABEL: test_mm_subs_epi16:7368; SSE:       # %bb.0:7369; SSE-NEXT:    psubsw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xe9,0xc1]7370; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7371;7372; AVX1-LABEL: test_mm_subs_epi16:7373; AVX1:       # %bb.0:7374; AVX1-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xe9,0xc1]7375; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7376;7377; AVX512-LABEL: test_mm_subs_epi16:7378; AVX512:       # %bb.0:7379; AVX512-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe9,0xc1]7380; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7381  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>7382  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>7383  %res = call <8 x i16> @llvm.ssub.sat.v8i16(<8 x i16> %arg0, <8 x i16> %arg1)7384  %bc = bitcast <8 x i16> %res to <2 x i64>7385  ret <2 x i64> %bc7386}7387declare <8 x i16> @llvm.ssub.sat.v8i16(<8 x i16>, <8 x i16>) nounwind readnone7388 7389define <2 x i64> @test_mm_subs_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind {7390; SSE-LABEL: test_mm_subs_epu8:7391; SSE:       # %bb.0:7392; SSE-NEXT:    psubusb %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd8,0xc1]7393; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7394;7395; AVX1-LABEL: test_mm_subs_epu8:7396; AVX1:       # %bb.0:7397; AVX1-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd8,0xc1]7398; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7399;7400; AVX512-LABEL: test_mm_subs_epu8:7401; AVX512:       # %bb.0:7402; AVX512-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd8,0xc1]7403; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7404  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>7405  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>7406  %res = call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %arg0, <16 x i8> %arg1)7407  %bc = bitcast <16 x i8> %res to <2 x i64>7408  ret <2 x i64> %bc7409}7410declare <16 x i8> @llvm.usub.sat.v16i8(<16 x i8>, <16 x i8>)7411 7412define <2 x i64> @test_mm_subs_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind {7413; SSE-LABEL: test_mm_subs_epu16:7414; SSE:       # %bb.0:7415; SSE-NEXT:    psubusw %xmm1, %xmm0 # encoding: [0x66,0x0f,0xd9,0xc1]7416; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7417;7418; AVX1-LABEL: test_mm_subs_epu16:7419; AVX1:       # %bb.0:7420; AVX1-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xd9,0xc1]7421; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7422;7423; AVX512-LABEL: test_mm_subs_epu16:7424; AVX512:       # %bb.0:7425; AVX512-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd9,0xc1]7426; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7427  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>7428  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>7429  %res = call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %arg0, <8 x i16> %arg1)7430  %bc = bitcast <8 x i16> %res to <2 x i64>7431  ret <2 x i64> %bc7432}7433declare <8 x i16> @llvm.usub.sat.v8i16(<8 x i16>, <8 x i16>)7434 7435define i32 @test_mm_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7436; SSE-LABEL: test_mm_ucomieq_sd:7437; SSE:       # %bb.0:7438; SSE-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]7439; SSE-NEXT:    setnp %al # encoding: [0x0f,0x9b,0xc0]7440; SSE-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]7441; SSE-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]7442; SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]7443; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7444;7445; AVX1-LABEL: test_mm_ucomieq_sd:7446; AVX1:       # %bb.0:7447; AVX1-NEXT:    vucomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2e,0xc1]7448; AVX1-NEXT:    setnp %al # encoding: [0x0f,0x9b,0xc0]7449; AVX1-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]7450; AVX1-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]7451; AVX1-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]7452; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7453;7454; AVX512-LABEL: test_mm_ucomieq_sd:7455; AVX512:       # %bb.0:7456; AVX512-NEXT:    vucomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2e,0xc1]7457; AVX512-NEXT:    setnp %al # encoding: [0x0f,0x9b,0xc0]7458; AVX512-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]7459; AVX512-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]7460; AVX512-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]7461; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7462  %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1)7463  ret i32 %res7464}7465declare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone7466 7467define i32 @test_mm_ucomige_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7468; SSE-LABEL: test_mm_ucomige_sd:7469; SSE:       # %bb.0:7470; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7471; SSE-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]7472; SSE-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]7473; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7474;7475; AVX1-LABEL: test_mm_ucomige_sd:7476; AVX1:       # %bb.0:7477; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7478; AVX1-NEXT:    vucomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2e,0xc1]7479; AVX1-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]7480; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7481;7482; AVX512-LABEL: test_mm_ucomige_sd:7483; AVX512:       # %bb.0:7484; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7485; AVX512-NEXT:    vucomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2e,0xc1]7486; AVX512-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]7487; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7488  %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1)7489  ret i32 %res7490}7491declare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone7492 7493define i32 @test_mm_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7494; SSE-LABEL: test_mm_ucomigt_sd:7495; SSE:       # %bb.0:7496; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7497; SSE-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]7498; SSE-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]7499; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7500;7501; AVX1-LABEL: test_mm_ucomigt_sd:7502; AVX1:       # %bb.0:7503; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7504; AVX1-NEXT:    vucomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2e,0xc1]7505; AVX1-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]7506; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7507;7508; AVX512-LABEL: test_mm_ucomigt_sd:7509; AVX512:       # %bb.0:7510; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7511; AVX512-NEXT:    vucomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2e,0xc1]7512; AVX512-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]7513; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7514  %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1)7515  ret i32 %res7516}7517declare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone7518 7519define i32 @test_mm_ucomile_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7520; SSE-LABEL: test_mm_ucomile_sd:7521; SSE:       # %bb.0:7522; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7523; SSE-NEXT:    ucomisd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x2e,0xc8]7524; SSE-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]7525; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7526;7527; AVX1-LABEL: test_mm_ucomile_sd:7528; AVX1:       # %bb.0:7529; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7530; AVX1-NEXT:    vucomisd %xmm0, %xmm1 # encoding: [0xc5,0xf9,0x2e,0xc8]7531; AVX1-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]7532; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7533;7534; AVX512-LABEL: test_mm_ucomile_sd:7535; AVX512:       # %bb.0:7536; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7537; AVX512-NEXT:    vucomisd %xmm0, %xmm1 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2e,0xc8]7538; AVX512-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]7539; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7540  %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1)7541  ret i32 %res7542}7543declare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone7544 7545define i32 @test_mm_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7546; SSE-LABEL: test_mm_ucomilt_sd:7547; SSE:       # %bb.0:7548; SSE-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7549; SSE-NEXT:    ucomisd %xmm0, %xmm1 # encoding: [0x66,0x0f,0x2e,0xc8]7550; SSE-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]7551; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7552;7553; AVX1-LABEL: test_mm_ucomilt_sd:7554; AVX1:       # %bb.0:7555; AVX1-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7556; AVX1-NEXT:    vucomisd %xmm0, %xmm1 # encoding: [0xc5,0xf9,0x2e,0xc8]7557; AVX1-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]7558; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7559;7560; AVX512-LABEL: test_mm_ucomilt_sd:7561; AVX512:       # %bb.0:7562; AVX512-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]7563; AVX512-NEXT:    vucomisd %xmm0, %xmm1 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2e,0xc8]7564; AVX512-NEXT:    seta %al # encoding: [0x0f,0x97,0xc0]7565; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7566  %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1)7567  ret i32 %res7568}7569declare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone7570 7571define i32 @test_mm_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) nounwind {7572; SSE-LABEL: test_mm_ucomineq_sd:7573; SSE:       # %bb.0:7574; SSE-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]7575; SSE-NEXT:    setp %al # encoding: [0x0f,0x9a,0xc0]7576; SSE-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]7577; SSE-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]7578; SSE-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]7579; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7580;7581; AVX1-LABEL: test_mm_ucomineq_sd:7582; AVX1:       # %bb.0:7583; AVX1-NEXT:    vucomisd %xmm1, %xmm0 # encoding: [0xc5,0xf9,0x2e,0xc1]7584; AVX1-NEXT:    setp %al # encoding: [0x0f,0x9a,0xc0]7585; AVX1-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]7586; AVX1-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]7587; AVX1-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]7588; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7589;7590; AVX512-LABEL: test_mm_ucomineq_sd:7591; AVX512:       # %bb.0:7592; AVX512-NEXT:    vucomisd %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x2e,0xc1]7593; AVX512-NEXT:    setp %al # encoding: [0x0f,0x9a,0xc0]7594; AVX512-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]7595; AVX512-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]7596; AVX512-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]7597; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7598  %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1)7599  ret i32 %res7600}7601declare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone7602 7603define <2 x double> @test_mm_undefined_pd() {7604; CHECK-LABEL: test_mm_undefined_pd:7605; CHECK:       # %bb.0:7606; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7607  ret <2 x double> undef7608}7609 7610define <2 x i64> @test_mm_undefined_si128() {7611; CHECK-LABEL: test_mm_undefined_si128:7612; CHECK:       # %bb.0:7613; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7614  ret <2 x i64> undef7615}7616 7617define <2 x i64> @test_mm_unpackhi_epi8(<2 x i64> %a0, <2 x i64> %a1) {7618; SSE-LABEL: test_mm_unpackhi_epi8:7619; SSE:       # %bb.0:7620; SSE-NEXT:    punpckhbw %xmm1, %xmm0 # encoding: [0x66,0x0f,0x68,0xc1]7621; SSE-NEXT:    # xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]7622; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7623;7624; AVX1-LABEL: test_mm_unpackhi_epi8:7625; AVX1:       # %bb.0:7626; AVX1-NEXT:    vpunpckhbw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x68,0xc1]7627; AVX1-NEXT:    # xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]7628; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7629;7630; AVX512-LABEL: test_mm_unpackhi_epi8:7631; AVX512:       # %bb.0:7632; AVX512-NEXT:    vpunpckhbw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x68,0xc1]7633; AVX512-NEXT:    # xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]7634; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7635  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>7636  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>7637  %res = shufflevector <16 x i8> %arg0, <16 x i8> %arg1, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>7638  %bc = bitcast <16 x i8> %res to <2 x i64>7639  ret <2 x i64> %bc7640}7641 7642define <2 x i64> @test_mm_unpackhi_epi16(<2 x i64> %a0, <2 x i64> %a1) {7643; SSE-LABEL: test_mm_unpackhi_epi16:7644; SSE:       # %bb.0:7645; SSE-NEXT:    punpckhwd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x69,0xc1]7646; SSE-NEXT:    # xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]7647; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7648;7649; AVX1-LABEL: test_mm_unpackhi_epi16:7650; AVX1:       # %bb.0:7651; AVX1-NEXT:    vpunpckhwd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x69,0xc1]7652; AVX1-NEXT:    # xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]7653; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7654;7655; AVX512-LABEL: test_mm_unpackhi_epi16:7656; AVX512:       # %bb.0:7657; AVX512-NEXT:    vpunpckhwd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x69,0xc1]7658; AVX512-NEXT:    # xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]7659; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7660  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>7661  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>7662  %res = shufflevector <8 x i16> %arg0, <8 x i16> %arg1, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>7663  %bc = bitcast <8 x i16> %res to <2 x i64>7664  ret <2 x i64> %bc7665}7666 7667define <2 x i64> @test_mm_unpackhi_epi32(<2 x i64> %a0, <2 x i64> %a1) {7668; SSE-LABEL: test_mm_unpackhi_epi32:7669; SSE:       # %bb.0:7670; SSE-NEXT:    unpckhps %xmm1, %xmm0 # encoding: [0x0f,0x15,0xc1]7671; SSE-NEXT:    # xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]7672; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7673;7674; AVX1-LABEL: test_mm_unpackhi_epi32:7675; AVX1:       # %bb.0:7676; AVX1-NEXT:    vunpckhps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x15,0xc1]7677; AVX1-NEXT:    # xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]7678; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7679;7680; AVX512-LABEL: test_mm_unpackhi_epi32:7681; AVX512:       # %bb.0:7682; AVX512-NEXT:    vunpckhps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x15,0xc1]7683; AVX512-NEXT:    # xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]7684; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7685  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>7686  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>7687  %res = shufflevector <4 x i32> %arg0,<4 x i32> %arg1, <4 x i32> <i32 2, i32 6, i32 3, i32 7>7688  %bc = bitcast <4 x i32> %res to <2 x i64>7689  ret <2 x i64> %bc7690}7691 7692define <2 x i64> @test_mm_unpackhi_epi64(<2 x i64> %a0, <2 x i64> %a1) {7693; SSE-LABEL: test_mm_unpackhi_epi64:7694; SSE:       # %bb.0:7695; SSE-NEXT:    unpckhpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x15,0xc1]7696; SSE-NEXT:    # xmm0 = xmm0[1],xmm1[1]7697; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7698;7699; AVX1-LABEL: test_mm_unpackhi_epi64:7700; AVX1:       # %bb.0:7701; AVX1-NEXT:    vunpckhpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x15,0xc1]7702; AVX1-NEXT:    # xmm0 = xmm0[1],xmm1[1]7703; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7704;7705; AVX512-LABEL: test_mm_unpackhi_epi64:7706; AVX512:       # %bb.0:7707; AVX512-NEXT:    vunpckhpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x15,0xc1]7708; AVX512-NEXT:    # xmm0 = xmm0[1],xmm1[1]7709; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7710  %res = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 1, i32 3>7711  ret <2 x i64> %res7712}7713 7714define <2 x double> @test_mm_unpackhi_pd(<2 x double> %a0, <2 x double> %a1) {7715; SSE-LABEL: test_mm_unpackhi_pd:7716; SSE:       # %bb.0:7717; SSE-NEXT:    unpckhpd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x15,0xc1]7718; SSE-NEXT:    # xmm0 = xmm0[1],xmm1[1]7719; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7720;7721; AVX1-LABEL: test_mm_unpackhi_pd:7722; AVX1:       # %bb.0:7723; AVX1-NEXT:    vunpckhpd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x15,0xc1]7724; AVX1-NEXT:    # xmm0 = xmm0[1],xmm1[1]7725; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7726;7727; AVX512-LABEL: test_mm_unpackhi_pd:7728; AVX512:       # %bb.0:7729; AVX512-NEXT:    vunpckhpd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x15,0xc1]7730; AVX512-NEXT:    # xmm0 = xmm0[1],xmm1[1]7731; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7732  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 3>7733  ret <2 x double> %res7734}7735 7736define <2 x i64> @test_mm_unpacklo_epi8(<2 x i64> %a0, <2 x i64> %a1) {7737; SSE-LABEL: test_mm_unpacklo_epi8:7738; SSE:       # %bb.0:7739; SSE-NEXT:    punpcklbw %xmm1, %xmm0 # encoding: [0x66,0x0f,0x60,0xc1]7740; SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]7741; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7742;7743; AVX1-LABEL: test_mm_unpacklo_epi8:7744; AVX1:       # %bb.0:7745; AVX1-NEXT:    vpunpcklbw %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x60,0xc1]7746; AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]7747; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7748;7749; AVX512-LABEL: test_mm_unpacklo_epi8:7750; AVX512:       # %bb.0:7751; AVX512-NEXT:    vpunpcklbw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x60,0xc1]7752; AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]7753; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7754  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>7755  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>7756  %res = shufflevector <16 x i8> %arg0, <16 x i8> %arg1, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>7757  %bc = bitcast <16 x i8> %res to <2 x i64>7758  ret <2 x i64> %bc7759}7760 7761define <2 x i64> @test_mm_unpacklo_epi16(<2 x i64> %a0, <2 x i64> %a1) {7762; SSE-LABEL: test_mm_unpacklo_epi16:7763; SSE:       # %bb.0:7764; SSE-NEXT:    punpcklwd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x61,0xc1]7765; SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]7766; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7767;7768; AVX1-LABEL: test_mm_unpacklo_epi16:7769; AVX1:       # %bb.0:7770; AVX1-NEXT:    vpunpcklwd %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0x61,0xc1]7771; AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]7772; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7773;7774; AVX512-LABEL: test_mm_unpacklo_epi16:7775; AVX512:       # %bb.0:7776; AVX512-NEXT:    vpunpcklwd %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x61,0xc1]7777; AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]7778; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7779  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>7780  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>7781  %res = shufflevector <8 x i16> %arg0, <8 x i16> %arg1, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>7782  %bc = bitcast <8 x i16> %res to <2 x i64>7783  ret <2 x i64> %bc7784}7785 7786define <2 x i64> @test_mm_unpacklo_epi32(<2 x i64> %a0, <2 x i64> %a1) {7787; SSE-LABEL: test_mm_unpacklo_epi32:7788; SSE:       # %bb.0:7789; SSE-NEXT:    unpcklps %xmm1, %xmm0 # encoding: [0x0f,0x14,0xc1]7790; SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]7791; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7792;7793; AVX1-LABEL: test_mm_unpacklo_epi32:7794; AVX1:       # %bb.0:7795; AVX1-NEXT:    vunpcklps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x14,0xc1]7796; AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]7797; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7798;7799; AVX512-LABEL: test_mm_unpacklo_epi32:7800; AVX512:       # %bb.0:7801; AVX512-NEXT:    vunpcklps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x14,0xc1]7802; AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]7803; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7804  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>7805  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>7806  %res = shufflevector <4 x i32> %arg0,<4 x i32> %arg1, <4 x i32> <i32 0, i32 4, i32 1, i32 5>7807  %bc = bitcast <4 x i32> %res to <2 x i64>7808  ret <2 x i64> %bc7809}7810 7811define <2 x i64> @test_mm_unpacklo_epi64(<2 x i64> %a0, <2 x i64> %a1) {7812; SSE-LABEL: test_mm_unpacklo_epi64:7813; SSE:       # %bb.0:7814; SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]7815; SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]7816; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7817;7818; AVX1-LABEL: test_mm_unpacklo_epi64:7819; AVX1:       # %bb.0:7820; AVX1-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0xc1]7821; AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0]7822; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7823;7824; AVX512-LABEL: test_mm_unpacklo_epi64:7825; AVX512:       # %bb.0:7826; AVX512-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0xc1]7827; AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0]7828; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7829  %res = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 0, i32 2>7830  ret <2 x i64> %res7831}7832 7833define <2 x double> @test_mm_unpacklo_pd(<2 x double> %a0, <2 x double> %a1) {7834; SSE-LABEL: test_mm_unpacklo_pd:7835; SSE:       # %bb.0:7836; SSE-NEXT:    movlhps %xmm1, %xmm0 # encoding: [0x0f,0x16,0xc1]7837; SSE-NEXT:    # xmm0 = xmm0[0],xmm1[0]7838; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7839;7840; AVX1-LABEL: test_mm_unpacklo_pd:7841; AVX1:       # %bb.0:7842; AVX1-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x16,0xc1]7843; AVX1-NEXT:    # xmm0 = xmm0[0],xmm1[0]7844; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7845;7846; AVX512-LABEL: test_mm_unpacklo_pd:7847; AVX512:       # %bb.0:7848; AVX512-NEXT:    vmovlhps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x16,0xc1]7849; AVX512-NEXT:    # xmm0 = xmm0[0],xmm1[0]7850; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7851  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 0, i32 2>7852  ret <2 x double> %res7853}7854 7855define <2 x double> @test_mm_xor_pd(<2 x double> %a0, <2 x double> %a1) nounwind {7856; SSE-LABEL: test_mm_xor_pd:7857; SSE:       # %bb.0:7858; SSE-NEXT:    xorps %xmm1, %xmm0 # encoding: [0x0f,0x57,0xc1]7859; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7860;7861; AVX1-LABEL: test_mm_xor_pd:7862; AVX1:       # %bb.0:7863; AVX1-NEXT:    vxorps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x57,0xc1]7864; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7865;7866; AVX512-LABEL: test_mm_xor_pd:7867; AVX512:       # %bb.0:7868; AVX512-NEXT:    vxorps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x57,0xc1]7869; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7870  %arg0 = bitcast <2 x double> %a0 to <4 x i32>7871  %arg1 = bitcast <2 x double> %a1 to <4 x i32>7872  %res = xor <4 x i32> %arg0, %arg17873  %bc = bitcast <4 x i32> %res to <2 x double>7874  ret <2 x double> %bc7875}7876 7877define <2 x i64> @test_mm_xor_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind {7878; SSE-LABEL: test_mm_xor_si128:7879; SSE:       # %bb.0:7880; SSE-NEXT:    xorps %xmm1, %xmm0 # encoding: [0x0f,0x57,0xc1]7881; SSE-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7882;7883; AVX1-LABEL: test_mm_xor_si128:7884; AVX1:       # %bb.0:7885; AVX1-NEXT:    vxorps %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf8,0x57,0xc1]7886; AVX1-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7887;7888; AVX512-LABEL: test_mm_xor_si128:7889; AVX512:       # %bb.0:7890; AVX512-NEXT:    vxorps %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x57,0xc1]7891; AVX512-NEXT:    ret{{[l|q]}} # encoding: [0xc3]7892  %res = xor <2 x i64> %a0, %a17893  ret <2 x i64> %res7894}7895 7896!0 = !{i32 1}7897 7898