blob: 5957e759873b82bd5a651af4cd8abe70e3212d66 [file] [edit]
; RUN: opt < %s -S -p vector-combine | FileCheck %s
define <2 x i1> @test_icmp_eq(i32 %arg) {
; CHECK-LABEL: define <2 x i1> @test_icmp_eq(
; CHECK-SAME: i32 [[Arg:%.*]]) {
; CHECK-NEXT: [[ScalarCmp:%.*]] = icmp eq i32 [[Arg]], 3
; CHECK-NEXT: [[Insert:%.*]] = insertelement <2 x i1> splat (i1 true), i1 [[ScalarCmp]], i64 0
; CHECK-NEXT: ret <2 x i1> [[Insert]]
%vec0 = insertelement <2 x i32> zeroinitializer, i32 %arg, i64 0
%vec1 = insertelement <2 x i32> zeroinitializer, i32 3, i64 0
%vecCmp = icmp eq <2 x i32> %vec0, %vec1
ret <2 x i1> %vecCmp
}
define <2 x i1> @test_icmp_slt(i32 %arg) {
; CHECK-LABEL: define <2 x i1> @test_icmp_slt(
; CHECK-SAME: i32 [[Arg:%.*]]) {
; CHECK-NEXT: [[ScalarCmp:%.*]] = icmp slt i32 [[Arg]], 3
; CHECK-NEXT: [[Insert:%.*]] = insertelement <2 x i1> zeroinitializer, i1 [[ScalarCmp]], i64 0
; CHECK-NEXT: ret <2 x i1> [[Insert]]
%vec0 = insertelement <2 x i32> zeroinitializer, i32 %arg, i64 0
%vec1 = insertelement <2 x i32> zeroinitializer, i32 3, i64 0
%vecCmp = icmp slt <2 x i32> %vec0, %vec1
ret <2 x i1> %vecCmp
}
define <2 x i1> @test_fcmp_oeq(float %arg) {
; CHECK-LABEL: define <2 x i1> @test_fcmp_oeq(
; CHECK-SAME: float [[Arg:%.*]]) {
; CHECK-NEXT: [[ScalarCmp:%.*]] = fcmp oeq float [[Arg]], 3.000000e+00
; CHECK-NEXT: [[Insert:%.*]] = insertelement <2 x i1> splat (i1 true), i1 [[ScalarCmp]], i64 0
; CHECK-NEXT: ret <2 x i1> [[Insert]]
%vec0 = insertelement <2 x float> zeroinitializer, float %arg, i64 0
%vec1 = insertelement <2 x float> zeroinitializer, float 3.000000e+00, i64 0
%vecCmp = fcmp oeq <2 x float> %vec0, %vec1
ret <2 x i1> %vecCmp
}
define <2 x i1> @test_fcmp_ult(float %arg) {
; CHECK-LABEL: define <2 x i1> @test_fcmp_ult(
; CHECK-SAME: float [[Arg:%.*]]) {
; CHECK-NEXT: [[ScalarCmp:%.*]] = fcmp fast ult float [[Arg]], 3.000000e+00
; CHECK-NEXT: [[Insert:%.*]] = insertelement <2 x i1> zeroinitializer, i1 [[ScalarCmp]], i64 0
; CHECK-NEXT: ret <2 x i1> [[Insert]]
%vec0 = insertelement <2 x float> zeroinitializer, float %arg, i64 0
%vec1 = insertelement <2 x float> zeroinitializer, float 3.000000e+00, i64 0
%vecCmp = fcmp fast ult <2 x float> %vec0, %vec1
ret <2 x i1> %vecCmp
}