define signext i32 @main() {
; CHECK-LABEL: main:
-; CHECK: li 3, -32477
-; CHECK: li 6, 234
-; CHECK: sth 3, 46(1)
-; CHECK: lis 3, 0
-; CHECK: ori 4, 3, 33059
-; CHECK: sync
-; CHECK: .LBB0_1: # %L.entry
-; CHECK: lharx 3, 0, 5
-; CHECK: cmpw 4, 3
-; CHECK: bne 0, .LBB0_3
-; CHECK: sthcx. 6, 0, 5
-; CHECK: bne 0, .LBB0_1
-; CHECK: b .LBB0_4
-; CHECK: .LBB0_3: # %L.entry
-; CHECK: sthcx. 3, 0, 5
-; CHECK: .LBB0_4: # %L.entry
-; CHECK: cmplwi 3, 33059
-; CHECK: lwsync
-; CHECK: lhz 3, 46(1)
-; CHECK: cmplwi 3, 234
+; CHECK: # %bb.0: # %L.entry
+; CHECK-NEXT: mflr 0
+; CHECK-NEXT: std 0, 16(1)
+; CHECK-NEXT: stdu 1, -48(1)
+; CHECK-NEXT: .cfi_def_cfa_offset 48
+; CHECK-NEXT: .cfi_offset lr, 16
+; CHECK-NEXT: li 3, -32477
+; CHECK-NEXT: li 6, 234
+; CHECK-NEXT: addi 5, 1, 46
+; CHECK-NEXT: sth 3, 46(1)
+; CHECK-NEXT: lis 3, 0
+; CHECK-NEXT: ori 4, 3, 33059
+; CHECK-NEXT: sync
+; CHECK-NEXT: .LBB0_1: # %L.entry
+; CHECK-NEXT: #
+; CHECK-NEXT: lharx 3, 0, 5
+; CHECK-NEXT: cmpw 4, 3
+; CHECK-NEXT: bne 0, .LBB0_3
+; CHECK-NEXT: # %bb.2: # %L.entry
+; CHECK-NEXT: #
+; CHECK-NEXT: sthcx. 6, 0, 5
+; CHECK-NEXT: bne 0, .LBB0_1
+; CHECK-NEXT: b .LBB0_4
+; CHECK-NEXT: .LBB0_3: # %L.entry
+; CHECK-NEXT: sthcx. 3, 0, 5
+; CHECK-NEXT: .LBB0_4: # %L.entry
+; CHECK-NEXT: cmplwi 3, 33059
+; CHECK-NEXT: lwsync
+; CHECK-NEXT: bne 0, .LBB0_7
+; CHECK-NEXT: # %bb.5: # %L.B0000
+; CHECK-NEXT: lhz 3, 46(1)
+; CHECK-NEXT: cmplwi 3, 234
+; CHECK-NEXT: bne 0, .LBB0_8
+; CHECK-NEXT: # %bb.6: # %L.B0001
+; CHECK-NEXT: addis 3, 2, .Lstr.2@toc@ha
+; CHECK-NEXT: addi 3, 3, .Lstr.2@toc@l
+; CHECK-NEXT: bl puts
+; CHECK-NEXT: nop
+; CHECK-NEXT: li 3, 0
+; CHECK-NEXT: b .LBB0_10
+; CHECK-NEXT: .LBB0_7: # %L.B0003
+; CHECK-NEXT: addis 3, 2, .Lstr@toc@ha
+; CHECK-NEXT: addi 3, 3, .Lstr@toc@l
+; CHECK-NEXT: b .LBB0_9
+; CHECK-NEXT: .LBB0_8: # %L.B0005
+; CHECK-NEXT: addis 3, 2, .Lstr.1@toc@ha
+; CHECK-NEXT: addi 3, 3, .Lstr.1@toc@l
+; CHECK-NEXT: .LBB0_9: # %L.B0003
+; CHECK-NEXT: bl puts
+; CHECK-NEXT: nop
+; CHECK-NEXT: li 3, 1
+; CHECK-NEXT: .LBB0_10: # %L.B0003
+; CHECK-NEXT: addi 1, 1, 48
+; CHECK-NEXT: ld 0, 16(1)
+; CHECK-NEXT: mtlr 0
+; CHECK-NEXT: blr
;
; CHECK-P7-LABEL: main:
-; CHECK-P7: li 3, -32477
-; CHECK-P7: lis 5, 0
-; CHECK-P7: li 7, 0
-; CHECK-P7: sth 3, 46(1)
-; CHECK-P7: li 6, 234
-; CHECK-P7: ori 5, 5, 33059
-; CHECK-P7: rlwinm 3, 4, 3, 27, 27
-; CHECK-P7: ori 7, 7, 65535
-; CHECK-P7: sync
-; CHECK-P7: slw 6, 6, 3
-; CHECK-P7: slw 8, 5, 3
-; CHECK-P7: slw 5, 7, 3
-; CHECK-P7: rldicr 4, 4, 0, 61
-; CHECK-P7: and 7, 6, 5
-; CHECK-P7: and 8, 8, 5
-; CHECK-P7: .LBB0_1: # %L.entry
-; CHECK-P7: lwarx 9, 0, 4
-; CHECK-P7: and 6, 9, 5
-; CHECK-P7: cmpw 6, 8
-; CHECK-P7: bne 0, .LBB0_3
-; CHECK-P7: andc 9, 9, 5
-; CHECK-P7: or 9, 9, 7
-; CHECK-P7: stwcx. 9, 0, 4
-; CHECK-P7: bne 0, .LBB0_1
-; CHECK-P7: b .LBB0_4
-; CHECK-P7: .LBB0_3: # %L.entry
-; CHECK-P7: stwcx. 9, 0, 4
-; CHECK-P7: .LBB0_4: # %L.entry
-; CHECK-P7: srw 3, 6, 3
-; CHECK-P7: lwsync
-; CHECK-P7: cmplwi 3, 33059
-; CHECK-P7: lhz 3, 46(1)
-; CHECK-P7: cmplwi 3, 234
+; CHECK-P7: # %bb.0: # %L.entry
+; CHECK-P7-NEXT: mflr 0
+; CHECK-P7-NEXT: std 0, 16(1)
+; CHECK-P7-NEXT: stdu 1, -48(1)
+; CHECK-P7-NEXT: .cfi_def_cfa_offset 48
+; CHECK-P7-NEXT: .cfi_offset lr, 16
+; CHECK-P7-NEXT: li 3, -32477
+; CHECK-P7-NEXT: lis 5, 0
+; CHECK-P7-NEXT: addi 4, 1, 46
+; CHECK-P7-NEXT: li 7, 0
+; CHECK-P7-NEXT: sth 3, 46(1)
+; CHECK-P7-NEXT: li 6, 234
+; CHECK-P7-NEXT: ori 5, 5, 33059
+; CHECK-P7-NEXT: rlwinm 3, 4, 3, 27, 27
+; CHECK-P7-NEXT: ori 7, 7, 65535
+; CHECK-P7-NEXT: sync
+; CHECK-P7-NEXT: slw 6, 6, 3
+; CHECK-P7-NEXT: slw 8, 5, 3
+; CHECK-P7-NEXT: slw 5, 7, 3
+; CHECK-P7-NEXT: rldicr 4, 4, 0, 61
+; CHECK-P7-NEXT: and 7, 6, 5
+; CHECK-P7-NEXT: and 8, 8, 5
+; CHECK-P7-NEXT: .LBB0_1: # %L.entry
+; CHECK-P7-NEXT: #
+; CHECK-P7-NEXT: lwarx 9, 0, 4
+; CHECK-P7-NEXT: and 6, 9, 5
+; CHECK-P7-NEXT: cmpw 6, 8
+; CHECK-P7-NEXT: bne 0, .LBB0_3
+; CHECK-P7-NEXT: # %bb.2: # %L.entry
+; CHECK-P7-NEXT: #
+; CHECK-P7-NEXT: andc 9, 9, 5
+; CHECK-P7-NEXT: or 9, 9, 7
+; CHECK-P7-NEXT: stwcx. 9, 0, 4
+; CHECK-P7-NEXT: bne 0, .LBB0_1
+; CHECK-P7-NEXT: b .LBB0_4
+; CHECK-P7-NEXT: .LBB0_3: # %L.entry
+; CHECK-P7-NEXT: stwcx. 9, 0, 4
+; CHECK-P7-NEXT: .LBB0_4: # %L.entry
+; CHECK-P7-NEXT: srw 3, 6, 3
+; CHECK-P7-NEXT: lwsync
+; CHECK-P7-NEXT: cmplwi 3, 33059
+; CHECK-P7-NEXT: bne 0, .LBB0_7
+; CHECK-P7-NEXT: # %bb.5: # %L.B0000
+; CHECK-P7-NEXT: lhz 3, 46(1)
+; CHECK-P7-NEXT: cmplwi 3, 234
+; CHECK-P7-NEXT: bne 0, .LBB0_8
+; CHECK-P7-NEXT: # %bb.6: # %L.B0001
+; CHECK-P7-NEXT: addis 3, 2, .Lstr.2@toc@ha
+; CHECK-P7-NEXT: addi 3, 3, .Lstr.2@toc@l
+; CHECK-P7-NEXT: bl puts
+; CHECK-P7-NEXT: nop
+; CHECK-P7-NEXT: li 3, 0
+; CHECK-P7-NEXT: b .LBB0_10
+; CHECK-P7-NEXT: .LBB0_7: # %L.B0003
+; CHECK-P7-NEXT: addis 3, 2, .Lstr@toc@ha
+; CHECK-P7-NEXT: addi 3, 3, .Lstr@toc@l
+; CHECK-P7-NEXT: b .LBB0_9
+; CHECK-P7-NEXT: .LBB0_8: # %L.B0005
+; CHECK-P7-NEXT: addis 3, 2, .Lstr.1@toc@ha
+; CHECK-P7-NEXT: addi 3, 3, .Lstr.1@toc@l
+; CHECK-P7-NEXT: .LBB0_9: # %L.B0003
+; CHECK-P7-NEXT: bl puts
+; CHECK-P7-NEXT: nop
+; CHECK-P7-NEXT: li 3, 1
+; CHECK-P7-NEXT: .LBB0_10: # %L.B0003
+; CHECK-P7-NEXT: addi 1, 1, 48
+; CHECK-P7-NEXT: ld 0, 16(1)
+; CHECK-P7-NEXT: mtlr 0
+; CHECK-P7-NEXT: blr
L.entry:
%value.addr = alloca i16, align 2
store i16 -32477, i16* %value.addr, align 2