Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/Mips/madd-msub.ll
Show First 20 Lines • Show All 336 Lines • ▼ Show 20 Lines | |||||
; 32-NEXT: mthi $1 | ; 32-NEXT: mthi $1 | ||||
; 32-NEXT: msubu $5, $4 | ; 32-NEXT: msubu $5, $4 | ||||
; 32-NEXT: mfhi $2 | ; 32-NEXT: mfhi $2 | ||||
; 32-NEXT: jr $ra | ; 32-NEXT: jr $ra | ||||
; 32-NEXT: mflo $3 | ; 32-NEXT: mflo $3 | ||||
; | ; | ||||
; 32R6-LABEL: msub2: | ; 32R6-LABEL: msub2: | ||||
; 32R6: # %bb.0: # %entry | ; 32R6: # %bb.0: # %entry | ||||
; 32R6-NEXT: mul $1, $5, $4 | ; 32R6-NEXT: muhu $1, $5, $4 | ||||
; 32R6-NEXT: sltu $2, $6, $1 | ; 32R6-NEXT: mul $3, $5, $4 | ||||
; 32R6-NEXT: muhu $3, $5, $4 | ; 32R6-NEXT: sltu $2, $6, $3 | ||||
; 32R6-NEXT: negu $3, $3 | ; 32R6-NEXT: addu $1, $1, $2 | ||||
; 32R6-NEXT: subu $2, $3, $2 | ; 32R6-NEXT: negu $2, $1 | ||||
; 32R6-NEXT: jr $ra | ; 32R6-NEXT: jr $ra | ||||
; 32R6-NEXT: subu $3, $6, $1 | ; 32R6-NEXT: subu $3, $6, $3 | ||||
; | ; | ||||
; DSP-LABEL: msub2: | ; DSP-LABEL: msub2: | ||||
; DSP: # %bb.0: # %entry | ; DSP: # %bb.0: # %entry | ||||
; DSP-NEXT: addiu $1, $zero, 0 | ; DSP-NEXT: addiu $1, $zero, 0 | ||||
; DSP-NEXT: mtlo $6, $ac0 | ; DSP-NEXT: mtlo $6, $ac0 | ||||
; DSP-NEXT: mthi $1, $ac0 | ; DSP-NEXT: mthi $1, $ac0 | ||||
; DSP-NEXT: msubu $ac0, $5, $4 | ; DSP-NEXT: msubu $ac0, $5, $4 | ||||
; DSP-NEXT: mfhi $2, $ac0 | ; DSP-NEXT: mfhi $2, $ac0 | ||||
Show All 12 Lines | |||||
; 64R6-NEXT: dmul $1, $5, $4 | ; 64R6-NEXT: dmul $1, $5, $4 | ||||
; 64R6-NEXT: jr $ra | ; 64R6-NEXT: jr $ra | ||||
; 64R6-NEXT: dsubu $2, $6, $1 | ; 64R6-NEXT: dsubu $2, $6, $1 | ||||
; | ; | ||||
; 16-LABEL: msub2: | ; 16-LABEL: msub2: | ||||
; 16: # %bb.0: # %entry | ; 16: # %bb.0: # %entry | ||||
; 16-NEXT: multu $5, $4 | ; 16-NEXT: multu $5, $4 | ||||
; 16-NEXT: mflo $2 | ; 16-NEXT: mflo $2 | ||||
; 16-NEXT: mfhi $4 | ; 16-NEXT: mfhi $3 | ||||
; 16-NEXT: subu $3, $6, $2 | |||||
; 16-NEXT: sltu $6, $2 | ; 16-NEXT: sltu $6, $2 | ||||
; 16-NEXT: move $2, $24 | ; 16-NEXT: move $4, $24 | ||||
; 16-NEXT: neg $4, $4 | ; 16-NEXT: addu $4, $3, $4 | ||||
; 16-NEXT: subu $2, $4, $2 | ; 16-NEXT: subu $3, $6, $2 | ||||
; 16-NEXT: neg $2, $4 | |||||
; 16-NEXT: jrc $ra | ; 16-NEXT: jrc $ra | ||||
entry: | entry: | ||||
%conv = zext i32 %c to i64 | %conv = zext i32 %c to i64 | ||||
%conv2 = zext i32 %a to i64 | %conv2 = zext i32 %a to i64 | ||||
%conv4 = zext i32 %b to i64 | %conv4 = zext i32 %b to i64 | ||||
%mul = mul nsw i64 %conv4, %conv2 | %mul = mul nsw i64 %conv4, %conv2 | ||||
%sub = sub nsw i64 %conv, %mul | %sub = sub nsw i64 %conv, %mul | ||||
ret i64 %sub | ret i64 %sub | ||||
▲ Show 20 Lines • Show All 116 Lines • Show Last 20 Lines |