brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 4702292 Raw
131 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 avoid relaxing these instructions and instead generate versions4// that use 8-bit immediate values.5 6bar:7// CHECK:      Disassembly of section imul:8// CHECK-EMPTY:9// CHECK-NEXT: <imul>:10// CHECK-NEXT:   0: 66 6b db 80                   imulw $-128, %bx, %bx11// CHECK-NEXT:   4: 66 6b 1c 25 00 00 00 00 7f    imulw $127, 0, %bx12// CHECK-NEXT:   d: 6b db 00                      imull $0, %ebx, %ebx13// CHECK-NEXT:  10: 6b 1c 25 00 00 00 00 01       imull $1, 0, %ebx14// CHECK-NEXT:  18: 48 6b db ff                   imulq $-1, %rbx, %rbx15// CHECK-NEXT:  1c: 48 6b 1c 25 00 00 00 00 2a    imulq $42, 0, %rbx16        .section imul,"x"17        imul $-128, %bx,  %bx18        imul $127, bar,  %bx19        imul $0, %ebx, %ebx20        imul $1, bar,  %ebx21        imul $-1, %rbx, %rbx22        imul $42, bar,  %rbx23 24 25// CHECK:      <and>:26// CHECK-NEXT:   0: 66 83 e3 7f                   andw $127, %bx27// CHECK-NEXT:   4: 66 83 24 25 00 00 00 00 00    andw $0, 028// CHECK-NEXT:   d: 83 e3 01                      andl $1, %ebx29// CHECK-NEXT:  10: 83 24 25 00 00 00 00 ff       andl $-1, 030// CHECK-NEXT:  18: 48 83 e3 2a                   andq $42, %rbx31// CHECK-NEXT:  1c: 48 83 24 25 00 00 00 00 80    andq $-128, 032        .section and,"x"33        and  $127, %bx34        andw $0, bar35        and  $1, %ebx36        andl $-1, bar37        and  $42, %rbx38        andq $-128, bar39 40// CHECK:      <or>:41// CHECK-NEXT:   0: 66 83 cb 00                   orw $0, %bx42// CHECK-NEXT:   4: 66 83 0c 25 00 00 00 00 01    orw $1, 043// CHECK-NEXT:   d: 83 cb ff                      orl $-1, %ebx44// CHECK-NEXT:  10: 83 0c 25 00 00 00 00 2a       orl $42, 045// CHECK-NEXT:  18: 48 83 cb 80                   orq $-128, %rbx46// CHECK-NEXT:  1c: 48 83 0c 25 00 00 00 00 7f    orq $127, 047        .section or,"x"48        or  $0, %bx49        orw $1, bar50        or  $-1, %ebx51        orl $42, bar52        or  $-128, %rbx53        orq $127, bar54 55// CHECK:      <xor>:56// CHECK-NEXT:   0: 66 83 f3 01                   xorw $1, %bx57// CHECK-NEXT:   4: 66 83 34 25 00 00 00 00 ff    xorw $-1, 058// CHECK-NEXT:   d: 83 f3 2a                      xorl $42, %ebx59// CHECK-NEXT:  10: 83 34 25 00 00 00 00 80       xorl $-128, 060// CHECK-NEXT:  18: 48 83 f3 7f                   xorq $127, %rbx61// CHECK-NEXT:  1c: 48 83 34 25 00 00 00 00 00    xorq $0, 062        .section xor,"x"63        xor  $1, %bx64        xorw $-1, bar65        xor  $42, %ebx66        xorl $-128, bar67        xor  $127, %rbx68        xorq $0, bar69 70// CHECK:      <add>:71// CHECK-NEXT:   0: 66 83 c3 ff                   addw $-1, %bx72// CHECK-NEXT:   4: 66 83 04 25 00 00 00 00 2a    addw $42, 073// CHECK-NEXT:   d: 83 c3 80                      addl $-128, %ebx74// CHECK-NEXT:  10: 83 04 25 00 00 00 00 7f       addl $127, 075// CHECK-NEXT:  18: 48 83 c3 00                   addq $0, %rbx76// CHECK-NEXT:  1c: 48 83 04 25 00 00 00 00 01    addq $1, 077        .section add,"x"78        add  $-1, %bx79        addw $42, bar80        add  $-128, %ebx81        addl $127, bar82        add  $0, %rbx83        addq $1, bar84 85// CHECK:      Disassembly of section sub:86// CHECK-EMPTY:87// CHECK-NEXT: <sub>:88// CHECK-NEXT:   0: 66 83 eb 2a                   subw $42, %bx89// CHECK-NEXT:   4: 66 83 2c 25 00 00 00 00 80    subw $-128, 090// CHECK-NEXT:   d: 83 eb 7f                      subl $127, %ebx91// CHECK-NEXT:  10: 83 2c 25 00 00 00 00 00       subl $0, 092// CHECK-NEXT:  18: 48 83 eb 01                   subq $1, %rbx93// CHECK-NEXT:  1c: 48 83 2c 25 00 00 00 00 ff    subq $-1, 094        .section sub,"x"95        sub  $42, %bx96        subw $-128, bar97        sub  $127, %ebx98        subl $0, bar99        sub  $1, %rbx100        subq $-1, bar101 102// CHECK:      Disassembly of section cmp:103// CHECK-EMPTY:104// CHECK-NEXT: <cmp>:105// CHECK-NEXT:   0: 66 83 fb 80                   cmpw $-128, %bx106// CHECK-NEXT:   4: 66 83 3c 25 00 00 00 00 7f    cmpw $127, 0107// CHECK-NEXT:   d: 83 fb 00                      cmpl $0, %ebx108// CHECK-NEXT:  10: 83 3c 25 00 00 00 00 01       cmpl $1, 0109// CHECK-NEXT:  18: 48 83 fb ff                   cmpq $-1, %rbx110// CHECK-NEXT:  1c: 48 83 3c 25 00 00 00 00 2a    cmpq $42, 0111        .section cmp,"x"112        cmp  $-128, %bx113        cmpw $127, bar114        cmp  $0, %ebx115        cmpl $1, bar116        cmp  $-1, %rbx117        cmpq $42, bar118 119// CHECK:      Disassembly of section push:120// CHECK-EMPTY:121// CHECK-NEXT: <push>:122// CHECK-NEXT:   0: 66 6a 80                      pushw $-128123// CHECK-NEXT:   3: 66 6a 7f                      pushw $127124// CHECK-NEXT:   6: 6a 80                         pushq $-128125// CHECK-NEXT:   8: 6a 7f                         pushq $127126        .section push,"x"127        pushw $-128128        pushw $127129        push  $-128130        push  $127131