| ; REQUIRES: allow_dump |
| |
| ; RUN: %p2i -i %s --filetype=asm --assemble --disassemble --target=mips32 \ |
| ; RUN: -a -sz-seed=1 -nop-insertion \ |
| ; RUN: -nop-insertion-percentage=50 -max-nops-per-instruction=1 \ |
| ; RUN: | FileCheck %s --check-prefix=MIPS32P50N1 |
| ; RUN: %p2i -i %s --filetype=asm --assemble --disassemble --target=mips32 \ |
| ; RUN: -a -sz-seed=1 -nop-insertion \ |
| ; RUN: -nop-insertion-percentage=110 -max-nops-per-instruction=2 \ |
| ; RUN: | FileCheck %s --check-prefix=MIPS32P110N2 |
| |
| |
| define internal i32 @nopInsertion(i32 %a, i32 %b, i32 %c) { |
| entry: |
| %a1 = add i32 %a, 1 |
| %b1 = add i32 %b, 2 |
| %c1 = add i32 %c, 3 |
| %a2 = sub i32 %a1, 1 |
| %b2 = sub i32 %b1, 2 |
| %c2 = sub i32 %c1, 3 |
| %a3 = mul i32 %a2, %b2 |
| %b3 = mul i32 %a3, %c2 |
| ret i32 %b3 |
| } |
| |
| ; MIPS32P50N1-LABEL: nopInsertion |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: addiu {{.*}} |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: addiu {{.*}},1 |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: addiu {{.*}},2 |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: addiu {{.*}},3 |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: addiu {{.*}},-1 |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: addiu {{.*}},-2 |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: addiu {{.*}},-3 |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: mul {{.*}} |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: mul {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: sw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: lw {{.*}} |
| ; MIPS32P50N1: nop |
| ; MIPS32P50N1: addiu {{.*}} |
| ; MIPS32P50N1: jr ra |
| ; MIPS32P50N1: nop |
| |
| ; MIPS32P110N2-LABEL: nopInsertion |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}},1 |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}},2 |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}},3 |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}},-1 |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}},-2 |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}},-3 |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: mul {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: mul {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: sw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: lw {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: addiu {{.*}} |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: jr ra |
| ; MIPS32P110N2: nop |
| ; MIPS32P110N2: nop |