brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · c9bd2af Raw
166 lines · plain
1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-objdump --no-print-imm-hex -d - | FileCheck  %s2 3// Test that we correctly relax these instructions into versions that use4// 16 or 32 bit immediate values.5 6bar:7// CHECK:      Disassembly of section imul:8// CHECK-EMPTY:9// CHECK-NEXT: <imul>:10// CHECK-NEXT:   0: 66 69 db 00 00                       imulw $0, %bx, %bx11// CHECK-NEXT:   5: 66 69 1c 25 00 00 00 00 00 00        imulw $0, 0, %bx12// CHECK-NEXT:   f: 69 db 00 00 00 00                    imull $0, %ebx, %ebx13// CHECK-NEXT:  15: 69 1c 25 00 00 00 00 00 00 00 00     imull $0, 0, %ebx14// CHECK-NEXT:  20: 48 69 db 00 00 00 00                 imulq $0, %rbx, %rbx15// CHECK-NEXT:  27: 48 69 1c 25 00 00 00 00 00 00 00 00  imulq $0, 0, %rbx16        .section imul,"x"17        imul $foo, %bx,  %bx18        imul $foo, bar,  %bx19        imul $foo, %ebx, %ebx20        imul $foo, bar,  %ebx21        imul $foo, %rbx, %rbx22        imul $foo, bar,  %rbx23 24// CHECK:      Disassembly of section and:25// CHECK-EMPTY:26// CHECK-NEXT: <and>:27// CHECK-NEXT:   0: 66 81 e3 00 00                       andw $0, %bx28// CHECK-NEXT:   5: 66 81 24 25 00 00 00 00 00 00        andw $0, 029// CHECK-NEXT:   f: 81 e3 00 00 00 00                    andl $0, %ebx30// CHECK-NEXT:  15: 81 24 25 00 00 00 00 00 00 00 00     andl $0, 031// CHECK-NEXT:  20: 48 81 e3 00 00 00 00                 andq $0, %rbx32// CHECK-NEXT:  27: 48 81 24 25 00 00 00 00 00 00 00 00  andq $0, 033        .section and,"x"34        and  $foo, %bx35        andw $foo, bar36        and  $foo, %ebx37        andl $foo, bar38        and  $foo, %rbx39        andq $foo, bar40 41// CHECK:      <or>:42// CHECK-NEXT:   0: 66 81 cb 00 00                       orw $0, %bx43// CHECK-NEXT:   5: 66 81 0c 25 00 00 00 00 00 00        orw $0, 044// CHECK-NEXT:   f: 81 cb 00 00 00 00                    orl $0, %ebx45// CHECK-NEXT:  15: 81 0c 25 00 00 00 00 00 00 00 00     orl $0, 046// CHECK-NEXT:  20: 48 81 cb 00 00 00 00                 orq $0, %rbx47// CHECK-NEXT:  27: 48 81 0c 25 00 00 00 00 00 00 00 00  orq $0, 048        .section or,"x"49        or  $foo, %bx50        orw $foo, bar51        or  $foo, %ebx52        orl $foo, bar53        or  $foo, %rbx54        orq $foo, bar55 56// CHECK:      Disassembly of section xor:57// CHECK-EMPTY:58// CHECK-NEXT: <xor>:59// CHECK-NEXT:   0: 66 81 f3 00 00                       xorw $0, %bx60// CHECK-NEXT:   5: 66 81 34 25 00 00 00 00 00 00        xorw $0, 061// CHECK-NEXT:   f: 81 f3 00 00 00 00                    xorl $0, %ebx62// CHECK-NEXT:  15: 81 34 25 00 00 00 00 00 00 00 00     xorl $0, 063// CHECK-NEXT:  20: 48 81 f3 00 00 00 00                 xorq $0, %rbx64// CHECK-NEXT:  27: 48 81 34 25 00 00 00 00 00 00 00 00  xorq $0, 065        .section xor,"x"66        xor  $foo, %bx67        xorw $foo, bar68        xor  $foo, %ebx69        xorl $foo, bar70        xor  $foo, %rbx71        xorq $foo, bar72 73// CHECK:      Disassembly of section add:74// CHECK-EMPTY:75// CHECK-NEXT: <add>:76// CHECK-NEXT:   0: 66 81 c3 00 00                       addw $0, %bx77// CHECK-NEXT:   5: 66 81 04 25 00 00 00 00 00 00        addw $0, 078// CHECK-NEXT:   f: 81 c3 00 00 00 00                    addl $0, %ebx79// CHECK-NEXT:  15: 81 04 25 00 00 00 00 00 00 00 00     addl $0, 080// CHECK-NEXT:  20: 48 81 c3 00 00 00 00                 addq $0, %rbx81// CHECK-NEXT:  27: 48 81 04 25 00 00 00 00 00 00 00 00  addq $0, 082        .section add,"x"83        add  $foo, %bx84        addw $foo, bar85        add  $foo, %ebx86        addl $foo, bar87        add  $foo, %rbx88        addq $foo, bar89 90// CHECK:      Disassembly of section sub:91// CHECK-EMPTY:92// CHECK-NEXT: <sub>:93// CHECK-NEXT:   0: 66 81 eb 00 00                       subw $0, %bx94// CHECK-NEXT:   5: 66 81 2c 25 00 00 00 00 00 00        subw $0, 095// CHECK-NEXT:   f: 81 eb 00 00 00 00                    subl $0, %ebx96// CHECK-NEXT:  15: 81 2c 25 00 00 00 00 00 00 00 00     subl $0, 097// CHECK-NEXT:  20: 48 81 eb 00 00 00 00                 subq $0, %rbx98// CHECK-NEXT:  27: 48 81 2c 25 00 00 00 00 00 00 00 00  subq $0, 099        .section sub,"x"100        sub  $foo, %bx101        subw $foo, bar102        sub  $foo, %ebx103        subl $foo, bar104        sub  $foo, %rbx105        subq $foo, bar106 107// CHECK:      Disassembly of section cmp:108// CHECK-EMPTY:109// CHECK-NEXT: <cmp>:110// CHECK-NEXT:   0: 66 81 fb 00 00                       cmpw $0, %bx111// CHECK-NEXT:   5: 66 81 3c 25 00 00 00 00 00 00        cmpw $0, 0112// CHECK-NEXT:   f: 81 fb 00 00 00 00                    cmpl $0, %ebx113// CHECK-NEXT:  15: 81 3c 25 00 00 00 00 00 00 00 00     cmpl $0, 0114// CHECK-NEXT:  20: 48 81 fb 00 00 00 00                 cmpq $0, %rbx115// CHECK-NEXT:  27: 48 81 3c 25 00 00 00 00 00 00 00 00  cmpq $0, 0116        .section cmp,"x"117        cmp  $foo, %bx118        cmpw $foo, bar119        cmp  $foo, %ebx120        cmpl $foo, bar121        cmp  $foo, %rbx122        cmpq $foo, bar123 124// CHECK:      Disassembly of section push:125// CHECK-EMPTY:126// CHECK-NEXT: <push>:127// CHECK-NEXT:   0: 66 68 00 00                          pushw $0128// CHECK-NEXT:   4: 68 00 00 00 00                       pushq $0129        .section push,"x"130        pushw $foo131        push  $foo132 133// CHECK:      Disassembly of section adc:134// CHECK-EMPTY:135// CHECK-NEXT: <adc>:136// CHECK-NEXT:   0: 66 81 d3 00 00                       adcw $0, %bx137// CHECK-NEXT:   5: 66 81 14 25 00 00 00 00 00 00        adcw $0, 0138// CHECK-NEXT:   f: 81 d3 00 00 00 00                    adcl $0, %ebx139// CHECK-NEXT:  15: 81 14 25 00 00 00 00 00 00 00 00     adcl $0, 0140// CHECK-NEXT:  20: 48 81 d3 00 00 00 00                 adcq $0, %rbx141// CHECK-NEXT:  27: 48 81 14 25 00 00 00 00 00 00 00 00  adcq $0, 0142        .section adc,"x"143        adc  $foo, %bx144        adcw $foo, bar145        adc  $foo, %ebx146        adcl $foo, bar147        adc  $foo, %rbx148        adcq $foo, bar149 150// CHECK:      Disassembly of section sbb:151// CHECK-EMPTY:152// CHECK-NEXT: <sbb>:153// CHECK-NEXT:   0: 66 81 db 00 00                       sbbw $0, %bx154// CHECK-NEXT:   5: 66 81 1c 25 00 00 00 00 00 00        sbbw $0, 0155// CHECK-NEXT:   f: 81 db 00 00 00 00                    sbbl $0, %ebx156// CHECK-NEXT:  15: 81 1c 25 00 00 00 00 00 00 00 00     sbbl $0, 0157// CHECK-NEXT:  20: 48 81 db 00 00 00 00                 sbbq $0, %rbx158// CHECK-NEXT:  27: 48 81 1c 25 00 00 00 00 00 00 00 00  sbbq $0, 0159        .section sbb,"x"160        sbb  $foo, %bx161        sbbw $foo, bar162        sbb  $foo, %ebx163        sbbl $foo, bar164        sbb  $foo, %rbx165        sbbq $foo, bar166