brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.6 KiB · 0d63779 Raw
189 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s | FileCheck %s3; Calls to abort should all be merged4 5; ModuleID = '5898899.c'6target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"7target triple = "x86_64-apple-darwin8"8	%struct.BoundaryAlignment = type { [3 x i8], i8, i16, i16, i8, [2 x i8] }9 10define void @passing2(i64 %str.0, i64 %str.1, i16 signext  %s, i32 %j, i8 signext  %c, i16 signext  %t, i16 signext  %u, i8 signext  %d) nounwind optsize {11; CHECK-LABEL: passing2:12; CHECK:       ## %bb.0: ## %entry13; CHECK-NEXT:    subq $40, %rsp14; CHECK-NEXT:    movq %rsi, %rax15; CHECK-NEXT:    movq %rdi, {{[0-9]+}}(%rsp)16; CHECK-NEXT:    movb %al, {{[0-9]+}}(%rsp)17; CHECK-NEXT:    movb %ah, {{[0-9]+}}(%rsp)18; CHECK-NEXT:    shrq $16, %rax19; CHECK-NEXT:    movb %al, {{[0-9]+}}(%rsp)20; CHECK-NEXT:    movb %ah, {{[0-9]+}}(%rsp)21; CHECK-NEXT:    movw %dx, {{[0-9]+}}(%rsp)22; CHECK-NEXT:    movl %ecx, {{[0-9]+}}(%rsp)23; CHECK-NEXT:    movb %r8b, {{[0-9]+}}(%rsp)24; CHECK-NEXT:    movw %r9w, {{[0-9]+}}(%rsp)25; CHECK-NEXT:    shll $14, %edi26; CHECK-NEXT:    sarl $23, %edi27; CHECK-NEXT:    cmpl %ecx, %edi28; CHECK-NEXT:    jne LBB0_629; CHECK-NEXT:  ## %bb.1: ## %bb2730; CHECK-NEXT:    movb {{[0-9]+}}(%rsp), %al31; CHECK-NEXT:    cmpb {{[0-9]+}}(%rsp), %al32; CHECK-NEXT:    jne LBB0_633; CHECK-NEXT:  ## %bb.2: ## %bb3534; CHECK-NEXT:    movl {{[0-9]+}}(%rsp), %eax35; CHECK-NEXT:    shll $7, %eax36; CHECK-NEXT:    cwtl37; CHECK-NEXT:    shrl $7, %eax38; CHECK-NEXT:    cmpw {{[0-9]+}}(%rsp), %ax39; CHECK-NEXT:    jne LBB0_640; CHECK-NEXT:  ## %bb.3: ## %bb5141; CHECK-NEXT:    movl {{[0-9]+}}(%rsp), %eax42; CHECK-NEXT:    shll $7, %eax43; CHECK-NEXT:    cwtl44; CHECK-NEXT:    shrl $7, %eax45; CHECK-NEXT:    cmpw {{[0-9]+}}(%rsp), %ax46; CHECK-NEXT:    jne LBB0_647; CHECK-NEXT:  ## %bb.4: ## %bb6748; CHECK-NEXT:    movb {{[0-9]+}}(%rsp), %al49; CHECK-NEXT:    cmpb {{[0-9]+}}(%rsp), %al50; CHECK-NEXT:    jne LBB0_651; CHECK-NEXT:  ## %bb.5: ## %bb7552; CHECK-NEXT:    addq $40, %rsp53; CHECK-NEXT:    retq54; CHECK-NEXT:  LBB0_6: ## %bb55; CHECK-NEXT:    xorl %eax, %eax56; CHECK-NEXT:    callq _abort57entry:58	%str_addr = alloca %struct.BoundaryAlignment		; <ptr> [#uses=7]59	%s_addr = alloca i16		; <ptr> [#uses=1]60	%j_addr = alloca i32		; <ptr> [#uses=2]61	%c_addr = alloca i8		; <ptr> [#uses=2]62	%t_addr = alloca i16		; <ptr> [#uses=2]63	%u_addr = alloca i16		; <ptr> [#uses=2]64	%d_addr = alloca i8		; <ptr> [#uses=2]65	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]66	%tmp1 = getelementptr { i64, i64 }, ptr %str_addr, i32 0, i32 0		; <ptr> [#uses=1]67	store i64 %str.0, ptr %tmp168	%tmp3 = getelementptr { i64, i64 }, ptr %str_addr, i32 0, i32 1		; <ptr> [#uses=1]69	%byte = trunc i64 %str.1 to i8		; <i8> [#uses=1]70	store i8 %byte, ptr %tmp371	%shft = lshr i64 %str.1, 8		; <i64> [#uses=2]72	%Loc = getelementptr i8, ptr %tmp3, i32 1		; <ptr> [#uses=2]73	%byte4 = trunc i64 %shft to i8		; <i8> [#uses=1]74	store i8 %byte4, ptr %Loc75	%shft5 = lshr i64 %shft, 8		; <i64> [#uses=2]76	%Loc6 = getelementptr i8, ptr %Loc, i32 1		; <ptr> [#uses=2]77	%byte7 = trunc i64 %shft5 to i8		; <i8> [#uses=1]78	store i8 %byte7, ptr %Loc679	%shft8 = lshr i64 %shft5, 8		; <i64> [#uses=2]80	%Loc9 = getelementptr i8, ptr %Loc6, i32 1		; <ptr> [#uses=2]81	%byte10 = trunc i64 %shft8 to i8		; <i8> [#uses=1]82	store i8 %byte10, ptr %Loc983	%shft11 = lshr i64 %shft8, 8		; <i64> [#uses=0]84	%Loc12 = getelementptr i8, ptr %Loc9, i32 1		; <ptr> [#uses=0]85	store i16 %s, ptr %s_addr86	store i32 %j, ptr %j_addr87	store i8 %c, ptr %c_addr88	store i16 %t, ptr %t_addr89	store i16 %u, ptr %u_addr90	store i8 %d, ptr %d_addr91	%tmp13 = getelementptr %struct.BoundaryAlignment, ptr %str_addr, i32 0, i32 0		; <ptr> [#uses=1]92	%tmp15 = load i32, ptr %tmp13, align 4		; <i32> [#uses=1]93	%tmp16 = shl i32 %tmp15, 14		; <i32> [#uses=1]94	%tmp17 = ashr i32 %tmp16, 23		; <i32> [#uses=1]95	%tmp1718 = trunc i32 %tmp17 to i16		; <i16> [#uses=1]96	%sextl = shl i16 %tmp1718, 7		; <i16> [#uses=1]97	%sextr = ashr i16 %sextl, 7		; <i16> [#uses=2]98	%sextl19 = shl i16 %sextr, 7		; <i16> [#uses=1]99	%sextr20 = ashr i16 %sextl19, 7		; <i16> [#uses=0]100	%sextl21 = shl i16 %sextr, 7		; <i16> [#uses=1]101	%sextr22 = ashr i16 %sextl21, 7		; <i16> [#uses=1]102	%sextr2223 = sext i16 %sextr22 to i32		; <i32> [#uses=1]103	%tmp24 = load i32, ptr %j_addr, align 4		; <i32> [#uses=1]104	%tmp25 = icmp ne i32 %sextr2223, %tmp24		; <i1> [#uses=1]105	%tmp2526 = zext i1 %tmp25 to i8		; <i8> [#uses=1]106	%toBool = icmp ne i8 %tmp2526, 0		; <i1> [#uses=1]107	br i1 %toBool, label %bb, label %bb27108 109bb:		; preds = %entry110	call void (...) @abort( ) noreturn nounwind111	unreachable112 113bb27:		; preds = %entry114	%tmp28 = getelementptr %struct.BoundaryAlignment, ptr %str_addr, i32 0, i32 1		; <ptr> [#uses=1]115	%tmp29 = load i8, ptr %tmp28, align 4		; <i8> [#uses=1]116	%tmp30 = load i8, ptr %c_addr, align 1		; <i8> [#uses=1]117	%tmp31 = icmp ne i8 %tmp29, %tmp30		; <i1> [#uses=1]118	%tmp3132 = zext i1 %tmp31 to i8		; <i8> [#uses=1]119	%toBool33 = icmp ne i8 %tmp3132, 0		; <i1> [#uses=1]120	br i1 %toBool33, label %bb34, label %bb35121 122bb34:		; preds = %bb27123	call void (...) @abort( ) noreturn nounwind124	unreachable125 126bb35:		; preds = %bb27127	%tmp36 = getelementptr %struct.BoundaryAlignment, ptr %str_addr, i32 0, i32 2		; <ptr> [#uses=1]128	%tmp37 = load i16, ptr %tmp36, align 4		; <i16> [#uses=1]129	%tmp38 = shl i16 %tmp37, 7		; <i16> [#uses=1]130	%tmp39 = ashr i16 %tmp38, 7		; <i16> [#uses=1]131	%sextl40 = shl i16 %tmp39, 7		; <i16> [#uses=1]132	%sextr41 = ashr i16 %sextl40, 7		; <i16> [#uses=2]133	%sextl42 = shl i16 %sextr41, 7		; <i16> [#uses=1]134	%sextr43 = ashr i16 %sextl42, 7		; <i16> [#uses=0]135	%sextl44 = shl i16 %sextr41, 7		; <i16> [#uses=1]136	%sextr45 = ashr i16 %sextl44, 7		; <i16> [#uses=1]137	%tmp46 = load i16, ptr %t_addr, align 2		; <i16> [#uses=1]138	%tmp47 = icmp ne i16 %sextr45, %tmp46		; <i1> [#uses=1]139	%tmp4748 = zext i1 %tmp47 to i8		; <i8> [#uses=1]140	%toBool49 = icmp ne i8 %tmp4748, 0		; <i1> [#uses=1]141	br i1 %toBool49, label %bb50, label %bb51142 143bb50:		; preds = %bb35144	call void (...) @abort( ) noreturn nounwind145	unreachable146 147bb51:		; preds = %bb35148	%tmp52 = getelementptr %struct.BoundaryAlignment, ptr %str_addr, i32 0, i32 3		; <ptr> [#uses=1]149	%tmp53 = load i16, ptr %tmp52, align 4		; <i16> [#uses=1]150	%tmp54 = shl i16 %tmp53, 7		; <i16> [#uses=1]151	%tmp55 = ashr i16 %tmp54, 7		; <i16> [#uses=1]152	%sextl56 = shl i16 %tmp55, 7		; <i16> [#uses=1]153	%sextr57 = ashr i16 %sextl56, 7		; <i16> [#uses=2]154	%sextl58 = shl i16 %sextr57, 7		; <i16> [#uses=1]155	%sextr59 = ashr i16 %sextl58, 7		; <i16> [#uses=0]156	%sextl60 = shl i16 %sextr57, 7		; <i16> [#uses=1]157	%sextr61 = ashr i16 %sextl60, 7		; <i16> [#uses=1]158	%tmp62 = load i16, ptr %u_addr, align 2		; <i16> [#uses=1]159	%tmp63 = icmp ne i16 %sextr61, %tmp62		; <i1> [#uses=1]160	%tmp6364 = zext i1 %tmp63 to i8		; <i8> [#uses=1]161	%toBool65 = icmp ne i8 %tmp6364, 0		; <i1> [#uses=1]162	br i1 %toBool65, label %bb66, label %bb67163 164bb66:		; preds = %bb51165	call void (...) @abort( ) noreturn nounwind166	unreachable167 168bb67:		; preds = %bb51169	%tmp68 = getelementptr %struct.BoundaryAlignment, ptr %str_addr, i32 0, i32 4		; <ptr> [#uses=1]170	%tmp69 = load i8, ptr %tmp68, align 4		; <i8> [#uses=1]171	%tmp70 = load i8, ptr %d_addr, align 1		; <i8> [#uses=1]172	%tmp71 = icmp ne i8 %tmp69, %tmp70		; <i1> [#uses=1]173	%tmp7172 = zext i1 %tmp71 to i8		; <i8> [#uses=1]174	%toBool73 = icmp ne i8 %tmp7172, 0		; <i1> [#uses=1]175	br i1 %toBool73, label %bb74, label %bb75176 177bb74:		; preds = %bb67178	call void (...) @abort( ) noreturn nounwind179	unreachable180 181bb75:		; preds = %bb67182	br label %return183 184return:		; preds = %bb75185	ret void186}187 188declare void @abort(...) noreturn nounwind189