diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/avx512-insert-extract.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/avx512-insert-extract.ll | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-insert-extract.ll b/llvm/test/CodeGen/X86/avx512-insert-extract.ll index 530b92e484e..3f067401ed3 100644 --- a/llvm/test/CodeGen/X86/avx512-insert-extract.ll +++ b/llvm/test/CodeGen/X86/avx512-insert-extract.ll @@ -98,3 +98,28 @@ define i32 @test10(<16 x i32> %x, i32 %ind) nounwind { ret i32 %e } +;CHECK-LABEL: test11 +;CHECK: movl $260 +;CHECK: bextrl +;CHECK: movl $268 +;CHECK: bextrl +;CHECK: ret +define <16 x i32> @test11(<16 x i32>%a, <16 x i32>%b) { + %cmp_res = icmp ult <16 x i32> %a, %b + %ia = extractelement <16 x i1> %cmp_res, i32 4 + %ib = extractelement <16 x i1> %cmp_res, i32 12 + + br i1 %ia, label %A, label %B + + A: + ret <16 x i32>%b + B: + %c = add <16 x i32>%b, %a + br i1 %ib, label %C, label %D + C: + %c1 = sub <16 x i32>%c, %a + ret <16 x i32>%c1 + D: + %c2 = mul <16 x i32>%c, %a + ret <16 x i32>%c2 +} |

