brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.8 KiB · 73c8b2a Raw
261 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=thumbv8.1m.main-none-eabi -mattr=+mve -run-pass arm-mve-vpt %s -o - | FileCheck %s3 4--- |5 6  define arm_aapcs_vfpcc <4 x i32> @vpnot(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {7  entry:8    %0 = icmp slt <4 x i32> %a, zeroinitializer9    %c2 = icmp sgt <4 x i32> %b, zeroinitializer10    %c3 = icmp eq <4 x i32> %c, zeroinitializer11    %o1 = and <4 x i1> %0, %c212    %o2 = xor <4 x i1> %o1, <i1 true, i1 true, i1 true, i1 true>13    %o = and <4 x i1> %c3, %o214    %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b15    ret <4 x i32> %s16  }17 18  define arm_aapcs_vfpcc <4 x i32> @vpnot_end(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {19  entry:20    %0 = icmp slt <4 x i32> %a, zeroinitializer21    %c2 = icmp sgt <4 x i32> %b, zeroinitializer22    %c3 = icmp eq <4 x i32> %c, zeroinitializer23    %o1 = and <4 x i1> %0, %c224    %o2 = xor <4 x i1> %o1, <i1 true, i1 true, i1 true, i1 true>25    br label %bb226  bb2:27    %o = and <4 x i1> %c3, %o228    %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b29    ret <4 x i32> %s30  }31 32  define arm_aapcs_vfpcc <4 x i32> @vpnot_two(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {33  entry:34    unreachable35  }36  define arm_aapcs_vfpcc <4 x i32> @vpnot_lots(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {37  entry:38    unreachable39  }40  define arm_aapcs_vfpcc <4 x i32> @vpnot_first(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {41  entry:42    unreachable43  }44  define arm_aapcs_vfpcc <4 x i32> @vpnot_many(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {45  entry:46    unreachable47  }48 49...50---51name:            vpnot52alignment:       453tracksRegLiveness: true54liveins:55  - { reg: '$q0', virtual-reg: '' }56  - { reg: '$q1', virtual-reg: '' }57  - { reg: '$q2', virtual-reg: '' }58body:             |59  bb.0.entry:60    liveins: $q0, $q1, $q261 62    ; CHECK-LABEL: name: vpnot63    ; CHECK: liveins: $q0, $q1, $q264    ; CHECK: BUNDLE implicit-def $vpr, implicit $q0, implicit $zr, implicit $q1, implicit killed $q2 {65    ; CHECK:   MVE_VPTv4s32r 12, renamable $q0, $zr, 11, implicit-def $vpr66    ; CHECK:   renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr, $noreg67    ; CHECK:   renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 2, internal killed renamable $vpr, $noreg68    ; CHECK: }69    ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg70    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $q071    renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg72    renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg73    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg74    renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg75    renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg76    tBX_RET 14, $noreg, implicit $q077 78...79---80name:            vpnot_end81alignment:       482tracksRegLiveness: true83liveins:84  - { reg: '$q0', virtual-reg: '' }85  - { reg: '$q1', virtual-reg: '' }86  - { reg: '$q2', virtual-reg: '' }87body:             |88  ; CHECK-LABEL: name: vpnot_end89  ; CHECK: bb.0.entry:90  ; CHECK:   successors: %bb.1(0x80000000)91  ; CHECK:   liveins: $q0, $q1, $q292  ; CHECK:   BUNDLE implicit-def $vpr, implicit $q0, implicit $zr, implicit $q1 {93  ; CHECK:     MVE_VPTv4s32r 8, renamable $q0, $zr, 11, implicit-def $vpr94  ; CHECK:     renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr, $noreg95  ; CHECK:   }96  ; CHECK:   renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg97  ; CHECK: bb.1.bb2:98  ; CHECK:   liveins: $q0, $q1, $q2, $vpr99  ; CHECK:   BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {100  ; CHECK:     MVE_VPST 8, implicit $vpr101  ; CHECK:     renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg102  ; CHECK:   }103  ; CHECK:   renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg104  ; CHECK:   tBX_RET 14 /* CC::al */, $noreg, implicit $q0105  bb.0.entry:106    liveins: $q0, $q1, $q2107 108    renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg109    renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg110    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg111 112  bb.1.bb2:113    liveins: $q0, $q1, $q2, $vpr114 115    renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg116    renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg117    tBX_RET 14, $noreg, implicit $q0118 119...120---121name:            vpnot_two122alignment:       4123tracksRegLiveness: true124liveins:125  - { reg: '$q0', virtual-reg: '' }126  - { reg: '$q1', virtual-reg: '' }127  - { reg: '$q2', virtual-reg: '' }128body:             |129  bb.0.entry:130    liveins: $q0, $q1, $q2131 132    ; CHECK-LABEL: name: vpnot_two133    ; CHECK: liveins: $q0, $q1, $q2134    ; CHECK: BUNDLE implicit-def $vpr, implicit $q0, implicit $zr, implicit $q1 {135    ; CHECK:   MVE_VPTv4s32r 8, renamable $q0, $zr, 11, implicit-def $vpr136    ; CHECK:   renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr, $noreg137    ; CHECK: }138    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg139    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg140    ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {141    ; CHECK:   MVE_VPST 8, implicit $vpr142    ; CHECK:   renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg143    ; CHECK: }144    ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg145    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $q0146    renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg147    renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg148    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg149    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg150    renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg151    renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg152    tBX_RET 14, $noreg, implicit $q0153 154...155---156name:            vpnot_lots157alignment:       4158tracksRegLiveness: true159liveins:160  - { reg: '$q0', virtual-reg: '' }161  - { reg: '$q1', virtual-reg: '' }162  - { reg: '$q2', virtual-reg: '' }163body:             |164  bb.0.entry:165    liveins: $q0, $q1, $q2166 167    ; CHECK-LABEL: name: vpnot_lots168    ; CHECK: liveins: $q0, $q1, $q2169    ; CHECK: BUNDLE implicit-def $vpr, implicit $q0, implicit $zr, implicit $q1 {170    ; CHECK:   MVE_VPTv4s32r 8, renamable $q0, $zr, 11, implicit-def $vpr171    ; CHECK:   renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr, $noreg172    ; CHECK: }173    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg174    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg175    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg176    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg177    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg178    ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {179    ; CHECK:   MVE_VPST 8, implicit $vpr180    ; CHECK:   renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg181    ; CHECK: }182    ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg183    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $q0184    renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg185    renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg186    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg187    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg188    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg189    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg190    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg191    renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg192    renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg193    tBX_RET 14, $noreg, implicit $q0194 195...196---197name:            vpnot_first198alignment:       4199tracksRegLiveness: true200liveins:201  - { reg: '$q0', virtual-reg: '' }202  - { reg: '$q1', virtual-reg: '' }203  - { reg: '$q2', virtual-reg: '' }204body:             |205  bb.0.entry:206    liveins: $q0, $q1, $q2207 208    ; CHECK-LABEL: name: vpnot_first209    ; CHECK: liveins: $q0, $q1, $q2210    ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg211    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg212    ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit $q1, implicit $zr, implicit killed $q2 {213    ; CHECK:   MVE_VPST 4, implicit $vpr214    ; CHECK:   renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg215    ; CHECK:   renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr, $noreg216    ; CHECK: }217    ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg218    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $q0219    renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg220    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg221    renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg222    renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg223    renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg224    tBX_RET 14, $noreg, implicit $q0225 226...227---228name:            vpnot_many229alignment:       4230tracksRegLiveness: true231liveins:232  - { reg: '$q0', virtual-reg: '' }233  - { reg: '$q1', virtual-reg: '' }234  - { reg: '$q2', virtual-reg: '' }235body:             |236  bb.0.entry:237    liveins: $q0, $q1, $q2238 239    ; CHECK-LABEL: name: vpnot_many240    ; CHECK: liveins: $q0, $q1, $q2241    ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg242    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg243    ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit $q1, implicit $zr, implicit killed $q2 {244    ; CHECK:   MVE_VPST 12, implicit $vpr245    ; CHECK:   renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg246    ; CHECK:   renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 2, internal killed renamable $vpr, $noreg247    ; CHECK: }248    ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg249    ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg250    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $q0251    renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg, $noreg252    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg253    renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr, $noreg254    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg255    renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr, $noreg256    renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg257    renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr, $noreg258    tBX_RET 14, $noreg, implicit $q0259 260...261