215 lines · plain
1# RUN: llc -O0 -mtriple=mips -mcpu=mips32r3 -mattr=+micromips,+eva -start-after=finalize-isel \2# RUN: -filetype obj %s -o - | llvm-objdump --no-print-imm-hex --mattr=+eva -d - | FileCheck %s3 4--- |5 6 @wArray = global [13 x i32] zeroinitializer, align 47 @hArray = global [13 x i16] zeroinitializer, align 28 @bArray = global [13 x i8] zeroinitializer, align 19 10 ; Function Attrs: noinline nounwind optnone11 define void @_Z3foov() {12 entry:13 %0 = load i8, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5), align 114 %conv = sext i8 %0 to i3215 %sub = sub nsw i32 %conv, 716 %conv1 = trunc i32 %sub to i817 store i8 %conv1, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3), align 118 %1 = load i8, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5), align 119 %conv2 = sext i8 %1 to i3220 %sub3 = sub nsw i32 %conv2, 721 %conv4 = trunc i32 %sub3 to i822 store i8 %conv4, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3), align 123 %2 = load i16, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5), align 224 %conv5 = sext i16 %2 to i3225 %sub6 = sub nsw i32 %conv5, 726 %conv7 = trunc i32 %sub6 to i1627 store i16 %conv7, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3), align 228 %3 = load i16, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5), align 229 %conv8 = sext i16 %3 to i3230 %sub9 = sub nsw i32 %conv8, 731 %conv10 = trunc i32 %sub9 to i1632 store i16 %conv10, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3), align 233 %4 = load i32, ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 5), align 434 %sub11 = sub nsw i32 %4, 735 store i32 %sub11, ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 3), align 436 ret void37 }38 39 ; Function Attrs: noinline nounwind optnone40 define i32 @_Z3barPi(ptr %z) {41 entry:42 %z.addr = alloca ptr, align 443 store ptr %z, ptr %z.addr, align 444 %0 = load ptr, ptr %z.addr, align 445 fence seq_cst46 %1 = atomicrmw add ptr %0, i32 42 monotonic47 fence seq_cst48 %2 = add i32 %1, 4249 ret i32 %250 }51 52...53---54name: _Z3foov55alignment: 456exposesReturnsTwice: false57legalized: false58regBankSelected: false59selected: false60tracksRegLiveness: true61registers:62 - { id: 0, class: gpr32, preferred-register: '' }63 - { id: 1, class: gpr32, preferred-register: '' }64 - { id: 2, class: gpr32, preferred-register: '' }65 - { id: 3, class: gpr32, preferred-register: '' }66 - { id: 4, class: gpr32, preferred-register: '' }67 - { id: 5, class: gpr32, preferred-register: '' }68 - { id: 6, class: gpr32, preferred-register: '' }69 - { id: 7, class: gpr32, preferred-register: '' }70 - { id: 8, class: gpr32, preferred-register: '' }71 - { id: 9, class: gpr32, preferred-register: '' }72 - { id: 10, class: gpr32, preferred-register: '' }73 - { id: 11, class: gpr32, preferred-register: '' }74 - { id: 12, class: gpr32, preferred-register: '' }75 - { id: 13, class: gpr32, preferred-register: '' }76 - { id: 14, class: gpr32, preferred-register: '' }77 - { id: 15, class: gpr32, preferred-register: '' }78liveins:79frameInfo:80 isFrameAddressTaken: false81 isReturnAddressTaken: false82 hasStackMap: false83 hasPatchPoint: false84 stackSize: 085 offsetAdjustment: 086 maxAlignment: 187 adjustsStack: false88 hasCalls: false89 stackProtector: ''90 maxCallFrameSize: 429496729591 hasOpaqueSPAdjustment: false92 hasVAStart: false93 hasMustTailInVarArgFunc: false94 savePoint: []95 restorePoint: []96fixedStack:97stack:98constants:99body: |100 bb.0.entry:101 %0:gpr32 = LUi target-flags(mips-abs-hi) @bArray102 %1:gpr32 = ADDiu killed %0, target-flags(mips-abs-lo) @bArray103 %2:gpr32 = LBuE %1, 5 :: (dereferenceable load (s8) from `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5)`)104 %3:gpr32 = ADDiu killed %2, -7105 SBE killed %3, %1, 3 :: (store (s8) into `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3)`)106 %4:gpr32 = LBE %1, 5 :: (dereferenceable load (s8) from `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5)`)107 %5:gpr32 = ADDiu killed %4, -7108 SBE killed %5, %1, 3 :: (store (s8) into `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3)`)109 %6:gpr32 = LUi target-flags(mips-abs-hi) @hArray110 %7:gpr32 = ADDiu killed %6, target-flags(mips-abs-lo) @hArray111 %8:gpr32 = LHuE %7, 10 :: (dereferenceable load (s16) from `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5)`)112 %9:gpr32 = ADDiu killed %8, -7113 SHE killed %9, %7, 6 :: (store (s16) into `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3)`)114 %10:gpr32 = LHE %7, 10 :: (dereferenceable load (s16) from `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5)`)115 %11:gpr32 = ADDiu killed %10, -7116 SHE killed %11, %7, 6 :: (store (s16) into `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3)`)117 %12:gpr32 = LUi target-flags(mips-abs-hi) @wArray118 %13:gpr32 = ADDiu killed %12, target-flags(mips-abs-lo) @wArray119 %14:gpr32 = LWE %13, 20 :: (dereferenceable load (s32) from `ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 5)`)120 %15:gpr32 = ADDiu killed %14, -7121 SWE killed %15, %13, 12 :: (store (s32) into `ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 3)`)122 RetRA123 124...125---126name: _Z3barPi127alignment: 4128exposesReturnsTwice: false129legalized: false130regBankSelected: false131selected: false132tracksRegLiveness: true133registers:134 - { id: 0, class: gpr32, preferred-register: '' }135 - { id: 1, class: gpr32, preferred-register: '' }136 - { id: 2, class: gpr32, preferred-register: '' }137 - { id: 3, class: gpr32, preferred-register: '' }138 - { id: 4, class: gpr32, preferred-register: '' }139 - { id: 5, class: gpr32, preferred-register: '' }140 - { id: 6, class: gpr32, preferred-register: '' }141 - { id: 7, class: gpr32, preferred-register: '' }142 - { id: 8, class: gpr32, preferred-register: '' }143liveins:144 - { reg: '$a0', virtual-reg: '%0' }145frameInfo:146 isFrameAddressTaken: false147 isReturnAddressTaken: false148 hasStackMap: false149 hasPatchPoint: false150 stackSize: 0151 offsetAdjustment: 0152 maxAlignment: 4153 adjustsStack: false154 hasCalls: false155 stackProtector: ''156 maxCallFrameSize: 4294967295157 hasOpaqueSPAdjustment: false158 hasVAStart: false159 hasMustTailInVarArgFunc: false160 savePoint: []161 restorePoint: []162fixedStack:163stack:164 - { id: 0, name: z.addr, type: default, offset: 0, size: 4, alignment: 4,165 stack-id: default, callee-saved-register: '', callee-saved-restored: true,166 debug-info-variable: '', debug-info-expression: '',167 debug-info-location: '' }168constants:169body: |170 bb.0.entry:171 successors: %bb.1(0x80000000)172 liveins: $a0173 174 %0:gpr32 = COPY $a0175 %1:gpr32 = COPY %0176 SW %0, %stack.0.z.addr, 0 :: (store (s32) into %ir.z.addr)177 %2:gpr32 = LW %stack.0.z.addr, 0 :: (dereferenceable load (s32) from %ir.z.addr)178 SYNC 0179 %3:gpr32 = ADDiu $zero, 42180 181 bb.1.entry:182 successors: %bb.1(0x40000000), %bb.2(0x40000000)183 184 %4:gpr32 = LLE %2, 0185 %6:gpr32 = ADDu %4, %3186 %8:gpr32 = SCE %6, %2, 0187 BEQ %8, $zero, %bb.1, implicit-def $at188 189 bb.2.entry:190 SYNC 0191 %5:gpr32 = ADDiu killed %4, 42192 $v0 = COPY %5193 CACHEE %1, 5, 2194 PREFE %1, 5, 2195 RetRA implicit $v0196 197...198 199# CHECK: 60 22 60 05 lbue $1, 5($2)200# CHECK: 60 22 68 05 lbe $1, 5($2)201# CHECK: 60 22 a8 03 sbe $1, 3($2)202 203# CHECK: 60 22 62 0a lhue $1, 10($2)204# CHECK: 60 22 6a 0a lhe $1, 10($2)205# CHECK: 60 22 aa 06 she $1, 6($2)206 207# CHECK: 60 22 6e 14 lwe $1, 20($2)208# CHECK: 60 22 ae 0c swe $1, 12($2)209 210# CHECK: 60 22 6c 00 lle $1, 0($2)211# CHECK: 60 22 ac 00 sce $1, 0($2)212 213# CHECK: 60 41 a6 05 cachee 2, 5($1)214# CHECK: 60 41 a4 05 prefe 2, 5($1)215