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