128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s --check-prefix=LE643; RUN: llc -mtriple=powerpcle-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s --check-prefix=LE324; RUN: llc -mtriple=powerpc64-ibm-aix -mcpu=pwr7 < %s | FileCheck %s --check-prefix=BE645; RUN: llc -mtriple=powerpc-ibm-aix -mcpu=pwr7 < %s | FileCheck %s --check-prefix=BE326 7; To verify this doesn't crash due to array out of bound.8define void @pr59074(ptr %0) {9; LE64-LABEL: pr59074:10; LE64: # %bb.0: # %entry11; LE64-NEXT: lwz 6, 0(3)12; LE64-NEXT: li 7, 1213; LE64-NEXT: ld 4, 16(3)14; LE64-NEXT: ld 5, 24(3)15; LE64-NEXT: addi 6, 6, -1216; LE64-NEXT: std 4, 16(3)17; LE64-NEXT: std 5, 24(3)18; LE64-NEXT: srd 6, 7, 619; LE64-NEXT: li 7, 020; LE64-NEXT: std 7, 8(3)21; LE64-NEXT: std 6, 0(3)22; LE64-NEXT: blr23;24; LE32-LABEL: pr59074:25; LE32: # %bb.0: # %entry26; LE32-NEXT: stwu 1, -80(1)27; LE32-NEXT: .cfi_def_cfa_offset 8028; LE32-NEXT: lwz 4, 0(3)29; LE32-NEXT: xxlxor 0, 0, 030; LE32-NEXT: li 5, 431; LE32-NEXT: addi 6, 1, 1632; LE32-NEXT: li 7, 033; LE32-NEXT: li 8, 1234; LE32-NEXT: xxswapd 0, 035; LE32-NEXT: rlwimi 5, 6, 0, 30, 2836; LE32-NEXT: stw 7, 44(1)37; LE32-NEXT: addi 4, 4, -1238; LE32-NEXT: stw 7, 40(1)39; LE32-NEXT: stw 7, 36(1)40; LE32-NEXT: stw 8, 16(1)41; LE32-NEXT: rlwinm 9, 4, 29, 28, 2942; LE32-NEXT: stxvd2x 0, 0, 543; LE32-NEXT: clrlwi 4, 4, 2744; LE32-NEXT: lwzux 5, 9, 645; LE32-NEXT: lwz 6, 8(9)46; LE32-NEXT: lwz 7, 4(9)47; LE32-NEXT: lwz 8, 12(9)48; LE32-NEXT: xori 9, 4, 3149; LE32-NEXT: subfic 11, 4, 3250; LE32-NEXT: srw 5, 5, 451; LE32-NEXT: slwi 10, 6, 152; LE32-NEXT: srw 6, 6, 453; LE32-NEXT: slw 9, 10, 954; LE32-NEXT: srw 10, 7, 455; LE32-NEXT: slw 7, 7, 1156; LE32-NEXT: slw 11, 8, 1157; LE32-NEXT: srw 4, 8, 458; LE32-NEXT: or 5, 7, 559; LE32-NEXT: or 6, 11, 660; LE32-NEXT: or 7, 10, 961; LE32-NEXT: stw 4, 12(3)62; LE32-NEXT: stw 6, 8(3)63; LE32-NEXT: stw 5, 0(3)64; LE32-NEXT: stw 7, 4(3)65; LE32-NEXT: addi 1, 1, 8066; LE32-NEXT: blr67;68; BE64-LABEL: pr59074:69; BE64: # %bb.0: # %entry70; BE64-NEXT: lwz 6, 12(3)71; BE64-NEXT: li 7, 1272; BE64-NEXT: ld 4, 24(3)73; BE64-NEXT: ld 5, 16(3)74; BE64-NEXT: addi 6, 6, -1275; BE64-NEXT: std 4, 24(3)76; BE64-NEXT: std 5, 16(3)77; BE64-NEXT: srd 6, 7, 678; BE64-NEXT: li 7, 079; BE64-NEXT: std 7, 0(3)80; BE64-NEXT: std 6, 8(3)81; BE64-NEXT: blr82;83; BE32-LABEL: pr59074:84; BE32: # %bb.0: # %entry85; BE32-NEXT: lwz 4, 12(3)86; BE32-NEXT: xxlxor 0, 0, 087; BE32-NEXT: addi 5, 1, -6488; BE32-NEXT: li 6, 1289; BE32-NEXT: li 7, 090; BE32-NEXT: addi 8, 1, -4891; BE32-NEXT: stxvw4x 0, 0, 592; BE32-NEXT: stw 6, -36(1)93; BE32-NEXT: addi 4, 4, -1294; BE32-NEXT: stw 7, -40(1)95; BE32-NEXT: stw 7, -44(1)96; BE32-NEXT: stw 7, -48(1)97; BE32-NEXT: rlwinm 9, 4, 29, 28, 2998; BE32-NEXT: clrlwi 4, 4, 2799; BE32-NEXT: sub 5, 8, 9100; BE32-NEXT: lwz 6, 4(5)101; BE32-NEXT: lwz 7, 0(5)102; BE32-NEXT: lwz 8, 12(5)103; BE32-NEXT: lwz 5, 8(5)104; BE32-NEXT: subfic 10, 4, 32105; BE32-NEXT: srw 9, 6, 4106; BE32-NEXT: slw 11, 7, 10107; BE32-NEXT: srw 8, 8, 4108; BE32-NEXT: slw 6, 6, 10109; BE32-NEXT: slw 10, 5, 10110; BE32-NEXT: srw 5, 5, 4111; BE32-NEXT: srw 4, 7, 4112; BE32-NEXT: or 7, 11, 9113; BE32-NEXT: or 8, 10, 8114; BE32-NEXT: or 5, 6, 5115; BE32-NEXT: stw 4, 0(3)116; BE32-NEXT: stw 5, 8(3)117; BE32-NEXT: stw 8, 12(3)118; BE32-NEXT: stw 7, 4(3)119; BE32-NEXT: blr120entry:121 %v1 = load <2 x i128>, <2 x i128>* %0122 %v2 = insertelement <2 x i128> %v1, i128 12, i32 0123 %v3 = sub <2 x i128> %v1, %v2124 %v4 = lshr <2 x i128> %v2, %v3125 store <2 x i128> %v4, <2 x i128>* %0126 ret void127}128