223 lines · plain
1# RUN: llc -mtriple powerpc64le-unknown-linux-gnu %s -o - 2>&1 \2# RUN: -run-pass=livevars,phi-node-elimination -verify-machineinstrs | \3# RUN: FileCheck %s4# RUN: llc -mtriple powerpc64le-unknown-linux-gnu %s -o - 2>&1 \5# RUN: --passes='require<live-vars>,phi-node-elimination' -verify-each | \6# RUN: FileCheck %s7 8--- |9 define float @testfloatslt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) {10 entry:11 %cmp1 = fcmp oeq float %c3, %c412 %cmp3tmp = fcmp oeq float %c1, %c213 %cmp3 = icmp slt i1 %cmp3tmp, %cmp114 %cond = select i1 %cmp3, float %a1, float %a215 ret float %cond16 }17 18 define signext i32 @select-i1-vs-i1(ptr nocapture dereferenceable(8) %p) #0 {19 entry:20 %.pre = load ptr, ptr %p, align 821 br label %loop22 23 loop: ; preds = %loop, %if.then3, %entry24 %0 = phi ptr [ %.pre, %entry ], [ %incdec.ptr4, %if.then3 ], [ %incdec.ptr, %loop ]25 %1 = load i8, ptr %0, align 126 %tobool = icmp eq i8 %1, 027 %incdec.ptr = getelementptr inbounds i8, ptr %0, i64 128 store ptr %incdec.ptr, ptr %p, align 829 %2 = load i8, ptr %incdec.ptr, align 130 %tobool2 = icmp ne i8 %2, 031 %or.cond = and i1 %tobool, %tobool232 br i1 %or.cond, label %if.then3, label %loop33 34 if.then3: ; preds = %loop35 %incdec.ptr4 = getelementptr inbounds i8, ptr %0, i64 236 store ptr %incdec.ptr4, ptr %p, align 837 br label %loop38 }39 40...41---42name: testfloatslt43tracksRegLiveness: true44registers:45 - { id: 0, class: f4rc, preferred-register: '' }46 - { id: 1, class: f4rc, preferred-register: '' }47 - { id: 2, class: f4rc, preferred-register: '' }48 - { id: 3, class: f4rc, preferred-register: '' }49 - { id: 4, class: f4rc, preferred-register: '' }50 - { id: 5, class: f4rc, preferred-register: '' }51 - { id: 6, class: crrc, preferred-register: '' }52 - { id: 7, class: crbitrc, preferred-register: '' }53 - { id: 8, class: crrc, preferred-register: '' }54 - { id: 9, class: crbitrc, preferred-register: '' }55 - { id: 10, class: crbitrc, preferred-register: '' }56 - { id: 11, class: f4rc, preferred-register: '' }57liveins:58 - { reg: '$f1', virtual-reg: '%0' }59 - { reg: '$f2', virtual-reg: '%1' }60 - { reg: '$f3', virtual-reg: '%2' }61 - { reg: '$f4', virtual-reg: '%3' }62 - { reg: '$f5', virtual-reg: '%4' }63 - { reg: '$f6', virtual-reg: '%5' }64body: |65 bb.0.entry:66 successors: %bb.2(0x20000000), %bb.1(0x60000000)67 liveins: $f1, $f2, $f3, $f4, $f5, $f668 69 %5:f4rc = COPY killed $f670 %4:f4rc = COPY killed $f571 %3:f4rc = COPY killed $f472 %2:f4rc = COPY killed $f373 %1:f4rc = COPY killed $f274 %0:f4rc = COPY killed $f175 %6:crrc = FCMPUS killed %2, killed %376 %7:crbitrc = COPY killed %6.sub_eq77 BC killed %7, %bb.278 B %bb.179 80 bb.1.entry:81 successors: %bb.2(0x2aaaaaab), %bb.3(0x55555555)82 83 %8:crrc = FCMPUS killed %0, killed %184 %9:crbitrc = COPY killed %8.sub_eq85 BC killed %9, %bb.386 87 bb.2.entry:88 successors: %bb.3(0x80000000)89 90 91 bb.3.entry:92 %11:f4rc = PHI %5, %bb.2, %4, %bb.193 $f1 = COPY killed %1194 BLR8 implicit $lr8, implicit $rm, implicit killed $f195 96...97---98name: select-i1-vs-i199alignment: 16100exposesReturnsTwice: false101legalized: false102regBankSelected: false103selected: false104failedISel: false105tracksRegLiveness: true106hasWinCFI: false107registers:108 - { id: 0, class: g8rc, preferred-register: '' }109 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }110 - { id: 2, class: g8rc, preferred-register: '' }111 - { id: 3, class: g8rc, preferred-register: '' }112 - { id: 4, class: g8rc_and_g8rc_nox0, preferred-register: '' }113 - { id: 5, class: gprc, preferred-register: '' }114 - { id: 6, class: crrc, preferred-register: '' }115 - { id: 7, class: crbitrc, preferred-register: '' }116 - { id: 8, class: gprc, preferred-register: '' }117 - { id: 9, class: crrc, preferred-register: '' }118 - { id: 10, class: crbitrc, preferred-register: '' }119 - { id: 11, class: crbitrc, preferred-register: '' }120liveins:121 - { reg: '$x3', virtual-reg: '%4' }122frameInfo:123 isFrameAddressTaken: false124 isReturnAddressTaken: false125 hasStackMap: false126 hasPatchPoint: false127 stackSize: 0128 offsetAdjustment: 0129 maxAlignment: 1130 adjustsStack: false131 hasCalls: false132 stackProtector: ''133 maxCallFrameSize: 4294967295134 cvBytesOfCalleeSavedRegisters: 0135 hasOpaqueSPAdjustment: false136 hasVAStart: false137 hasMustTailInVarArgFunc: false138 localFrameSize: 0139 savePoint: []140 restorePoint: []141fixedStack: []142stack: []143callSites: []144constants: []145machineFunctionInfo: {}146body: |147 bb.0.entry:148 successors: %bb.1(0x80000000)149 liveins: $x3150 151 %4:g8rc_and_g8rc_nox0 = COPY killed $x3152 %0:g8rc = LD 0, %4 :: (dereferenceable load (s64) from %ir.p)153 154 bb.1.loop:155 successors: %bb.1(0x20000000), %bb.2(0x60000000)156 157 %1:g8rc_and_g8rc_nox0 = PHI %0, %bb.0, %2, %bb.1, %3, %bb.3, %2, %bb.2158 %5:gprc = LBZ 0, %1 :: (load (s8) from %ir.0)159 %6:crrc = CMPWI killed %5, 0160 %7:crbitrc = COPY killed %6.sub_eq161 %2:g8rc = nuw ADDI8 %1, 1162 STD %2, 0, %4 :: (store (s64) into %ir.p)163 %8:gprc = LBZ 1, %1 :: (load (s8) from %ir.incdec.ptr)164 BCn killed %7, %bb.1165 B %bb.2166 167 bb.2.loop:168 successors: %bb.3(0x55555555), %bb.1(0x2aaaaaab)169 170 %9:crrc = CMPWI killed %8, 0171 %10:crbitrc = COPY killed %9.sub_eq172 BC killed %10, %bb.1173 B %bb.3174 175 bb.3.if.then3:176 successors: %bb.1(0x80000000)177 178 %3:g8rc = nuw ADDI8 killed %1, 2179 STD %3, 0, %4 :: (store (s64) into %ir.p)180 B %bb.1181 182 ; CHECK-LABEL: name: testfloatslt183 ; CHECK: bb.0.entry:184 ; CHECK: successors: %bb.1(0x80000000)185 ; CHECK: liveins: $x3186 187 ; CHECK: %4:g8rc_and_g8rc_nox0 = COPY killed $x3188 ; CHECK: %0:g8rc = LD 0, %4 :: (dereferenceable load (s64) from %ir.p)189 ; CHECK: %12:g8rc_and_g8rc_nox0 = COPY killed %0190 191 ; CHECK: bb.1.loop:192 ; CHECK: successors: %bb.1(0x20000000), %bb.2(0x60000000)193 194 ; CHECK: %1:g8rc_and_g8rc_nox0 = COPY killed %12195 ; CHECK: %5:gprc = LBZ 0, %1 :: (load (s8) from %ir.0)196 ; CHECK: %6:crrc = CMPWI killed %5, 0197 ; CHECK: %7:crbitrc = COPY killed %6.sub_eq198 ; CHECK: %2:g8rc = nuw ADDI8 %1, 1199 ; CHECK: STD %2, 0, %4 :: (store (s64) into %ir.p)200 ; CHECK: %8:gprc = LBZ 1, %1 :: (load (s8) from %ir.incdec.ptr)201 ; CHECK: %12:g8rc_and_g8rc_nox0 = COPY %2202 ; CHECK: BCn killed %7, %bb.1203 ; CHECK: B %bb.2204 205 ; CHECK: bb.2.loop:206 ; CHECK: successors: %bb.3(0x55555555), %bb.1(0x2aaaaaab)207 208 ; CHECK: %9:crrc = CMPWI killed %8, 0209 ; CHECK: %10:crbitrc = COPY killed %9.sub_eq210 ; CHECK: %12:g8rc_and_g8rc_nox0 = COPY killed %2211 ; CHECK: BC killed %10, %bb.1212 ; CHECK: B %bb.3213 214 ; CHECK: bb.3.if.then3:215 ; CHECK: successors: %bb.1(0x80000000)216 217 ; CHECK: %3:g8rc = nuw ADDI8 killed %1, 2218 ; CHECK: STD %3, 0, %4 :: (store (s64) into %ir.p)219 ; CHECK: %12:g8rc_and_g8rc_nox0 = COPY killed %3220 ; CHECK: B %bb.1221 222...223