X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FX86%2Fmasked_memop.ll;h=a720054c167ca6d74e9b45c57ab87006b8875ed6;hb=43be5f580c428d40c794917273256226e8ee391c;hp=84ebdf1ef18d1ccec074caa7476a6c4d1350fca4;hpb=6d024c616a2a4959f8dfe5c64d27f89b394cf042;p=oota-llvm.git diff --git a/test/CodeGen/X86/masked_memop.ll b/test/CodeGen/X86/masked_memop.ll index 84ebdf1ef18..a720054c167 100644 --- a/test/CodeGen/X86/masked_memop.ll +++ b/test/CodeGen/X86/masked_memop.ll @@ -300,3 +300,28 @@ declare void @llvm.masked.store.v8f64(<8 x double>, <8 x double>*, i32, <8 x i1> declare void @llvm.masked.store.v2f64(<2 x double>, <2 x double>*, i32, <2 x i1>) declare void @llvm.masked.store.v2i64(<2 x i64>, <2 x i64>*, i32, <2 x i1>) +declare <16 x i32*> @llvm.masked.load.v16p0i32(<16 x i32*>*, i32, <16 x i1>, <16 x i32*>) + +; AVX512-LABEL: test23 +; AVX512: vmovdqu64 64(%rdi), %zmm1 {%k2} {z} +; AVX512: vmovdqu64 (%rdi), %zmm0 {%k1} {z} + +define <16 x i32*> @test23(<16 x i32*> %trigger, <16 x i32*>* %addr) { + %mask = icmp eq <16 x i32*> %trigger, zeroinitializer + %res = call <16 x i32*> @llvm.masked.load.v16p0i32(<16 x i32*>* %addr, i32 4, <16 x i1>%mask, <16 x i32*>zeroinitializer) + ret <16 x i32*> %res +} + +%mystruct = type { i16, i16, [1 x i8*] } + +declare <16 x %mystruct*> @llvm.masked.load.v16p0mystruct(<16 x %mystruct*>*, i32, <16 x i1>, <16 x %mystruct*>) + +; AVX512-LABEL: test24 +; AVX512: vmovdqu64 (%rdi), %zmm0 {%k1} {z} +; AVX512: kshiftrw $8, %k1, %k1 +; AVX512: vmovdqu64 64(%rdi), %zmm1 {%k1} {z} + +define <16 x %mystruct*> @test24(<16 x i1> %mask, <16 x %mystruct*>* %addr) { + %res = call <16 x %mystruct*> @llvm.masked.load.v16p0mystruct(<16 x %mystruct*>* %addr, i32 4, <16 x i1>%mask, <16 x %mystruct*>zeroinitializer) + ret <16 x %mystruct*> %res +}