brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.3 KiB · 3d5fab8 Raw
256 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -passes=instcombine < %s | FileCheck %s3target triple = "aarch64-unknown-linux-gnu"4 5define <vscale x 16 x i1> @test_cmpeq(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b){6; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpeq(7; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 16 x i8> [[B:%.*]]) {8; CHECK-NEXT:  [[ENTRY:.*:]]9; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer10;11entry:12  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpeq.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b)13  ret <vscale x 16 x i1> %014}15 16define <vscale x 16 x i1> @test_cmpeq_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){17; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpeq_wide(18; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {19; CHECK-NEXT:  [[ENTRY:.*:]]20; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer21;22entry:23  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)24  ret <vscale x 16 x i1> %025}26 27define <vscale x 16 x i1> @test_cmpge(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b){28; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpge(29; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 16 x i8> [[B:%.*]]) {30; CHECK-NEXT:  [[ENTRY:.*:]]31; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer32;33entry:34  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b)35  ret <vscale x 16 x i1> %036}37 38define <vscale x 16 x i1> @test_cmpge_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){39; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpge_wide(40; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {41; CHECK-NEXT:  [[ENTRY:.*:]]42; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer43;44entry:45  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)46  ret <vscale x 16 x i1> %047}48 49define <vscale x 16 x i1> @test_cmpgt(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b){50; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpgt(51; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 16 x i8> [[B:%.*]]) {52; CHECK-NEXT:  [[ENTRY:.*:]]53; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer54;55entry:56  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b)57  ret <vscale x 16 x i1> %058}59 60define <vscale x 16 x i1> @test_cmpgt_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){61; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpgt_wide(62; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {63; CHECK-NEXT:  [[ENTRY:.*:]]64; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer65;66entry:67  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)68  ret <vscale x 16 x i1> %069}70 71define <vscale x 16 x i1> @test_cmphi(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b){72; CHECK-LABEL: define <vscale x 16 x i1> @test_cmphi(73; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 16 x i8> [[B:%.*]]) {74; CHECK-NEXT:  [[ENTRY:.*:]]75; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer76;77entry:78  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b)79  ret <vscale x 16 x i1> %080}81 82define <vscale x 16 x i1> @test_cmphi_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){83; CHECK-LABEL: define <vscale x 16 x i1> @test_cmphi_wide(84; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {85; CHECK-NEXT:  [[ENTRY:.*:]]86; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer87;88entry:89  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)90  ret <vscale x 16 x i1> %091}92 93define <vscale x 16 x i1> @test_cmphs(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b){94; CHECK-LABEL: define <vscale x 16 x i1> @test_cmphs(95; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 16 x i8> [[B:%.*]]) {96; CHECK-NEXT:  [[ENTRY:.*:]]97; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer98;99entry:100  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b)101  ret <vscale x 16 x i1> %0102}103 104define <vscale x 16 x i1> @test_cmphs_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){105; CHECK-LABEL: define <vscale x 16 x i1> @test_cmphs_wide(106; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {107; CHECK-NEXT:  [[ENTRY:.*:]]108; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer109;110entry:111  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)112  ret <vscale x 16 x i1> %0113}114 115define <vscale x 16 x i1> @test_cmple_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){116; CHECK-LABEL: define <vscale x 16 x i1> @test_cmple_wide(117; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {118; CHECK-NEXT:  [[ENTRY:.*:]]119; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer120;121entry:122  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmple.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)123  ret <vscale x 16 x i1> %0124}125 126define <vscale x 16 x i1> @test_cmplo_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){127; CHECK-LABEL: define <vscale x 16 x i1> @test_cmplo_wide(128; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {129; CHECK-NEXT:  [[ENTRY:.*:]]130; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer131;132entry:133  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmplo.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)134  ret <vscale x 16 x i1> %0135}136 137define <vscale x 16 x i1> @test_cmpls_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){138; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpls_wide(139; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {140; CHECK-NEXT:  [[ENTRY:.*:]]141; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer142;143entry:144  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpls.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)145  ret <vscale x 16 x i1> %0146}147 148define <vscale x 16 x i1> @test_cmplt_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){149; CHECK-LABEL: define <vscale x 16 x i1> @test_cmplt_wide(150; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {151; CHECK-NEXT:  [[ENTRY:.*:]]152; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer153;154entry:155  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmplt.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)156  ret <vscale x 16 x i1> %0157}158 159define <vscale x 16 x i1> @test_cmpne(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b){160; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpne(161; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 16 x i8> [[B:%.*]]) {162; CHECK-NEXT:  [[ENTRY:.*:]]163; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer164;165entry:166  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpne.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b)167  ret <vscale x 16 x i1> %0168}169 170define <vscale x 16 x i1> @test_cmpne_wide(<vscale x 16 x i8> %a, <vscale x 2 x i64> %b){171; CHECK-LABEL: define <vscale x 16 x i1> @test_cmpne_wide(172; CHECK-SAME: <vscale x 16 x i8> [[A:%.*]], <vscale x 2 x i64> [[B:%.*]]) {173; CHECK-NEXT:  [[ENTRY:.*:]]174; CHECK-NEXT:    ret <vscale x 16 x i1> zeroinitializer175;176entry:177  %0 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.cmpne.wide.nxv16i8(<vscale x 16 x i1> zeroinitializer, <vscale x 16 x i8> %a, <vscale x 2 x i64> %b)178  ret <vscale x 16 x i1> %0179}180 181define <vscale x 8 x i1> @test_facge(<vscale x 8 x half> %a, <vscale x 8 x half> %b){ry:182; CHECK-LABEL: define <vscale x 8 x i1> @test_facge(183; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {184; CHECK-NEXT:  [[RY:.*:]]185; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer186;187  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.facge.nxv8f16(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)188  ret <vscale x 8 x i1> %0189}190 191define <vscale x 8 x i1> @test_facgt(<vscale x 8 x half> %a, <vscale x 8 x half> %b){ry:192; CHECK-LABEL: define <vscale x 8 x i1> @test_facgt(193; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {194; CHECK-NEXT:  [[RY:.*:]]195; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer196;197  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.facgt.nxv8f16(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)198  ret <vscale x 8 x i1> %0199}200 201define <vscale x 8 x i1> @test_fcmpeq(<vscale x 8 x half> %a, <vscale x 8 x half> %b){202; CHECK-LABEL: define <vscale x 8 x i1> @test_fcmpeq(203; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {204; CHECK-NEXT:  [[ENTRY:.*:]]205; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer206;207entry:208  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.fcmpeq.nxv16i8(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)209  ret <vscale x 8 x i1> %0210}211 212define <vscale x 8 x i1> @test_fcmpge(<vscale x 8 x half> %a, <vscale x 8 x half> %b){213; CHECK-LABEL: define <vscale x 8 x i1> @test_fcmpge(214; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {215; CHECK-NEXT:  [[ENTRY:.*:]]216; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer217;218entry:219  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.fcmpge.nxv16i8(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)220  ret <vscale x 8 x i1> %0221}222 223define <vscale x 8 x i1> @test_fcmpgt(<vscale x 8 x half> %a, <vscale x 8 x half> %b){224; CHECK-LABEL: define <vscale x 8 x i1> @test_fcmpgt(225; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {226; CHECK-NEXT:  [[ENTRY:.*:]]227; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer228;229entry:230  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.fcmpgt.nxv16i8(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)231  ret <vscale x 8 x i1> %0232}233 234define <vscale x 8 x i1> @test_fcmpne(<vscale x 8 x half> %a, <vscale x 8 x half> %b){235; CHECK-LABEL: define <vscale x 8 x i1> @test_fcmpne(236; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {237; CHECK-NEXT:  [[ENTRY:.*:]]238; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer239;240entry:241  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.fcmpne.nxv16i8(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)242  ret <vscale x 8 x i1> %0243}244 245define <vscale x 8 x i1> @test_fcmpuo(<vscale x 8 x half> %a, <vscale x 8 x half> %b){246; CHECK-LABEL: define <vscale x 8 x i1> @test_fcmpuo(247; CHECK-SAME: <vscale x 8 x half> [[A:%.*]], <vscale x 8 x half> [[B:%.*]]) {248; CHECK-NEXT:  [[ENTRY:.*:]]249; CHECK-NEXT:    ret <vscale x 8 x i1> zeroinitializer250;251entry:252  %0 = tail call <vscale x 8 x i1> @llvm.aarch64.sve.fcmpuo.nxv16i8(<vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %a, <vscale x 8 x half> %b)253  ret <vscale x 8 x i1> %0254}255 256