1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-objdump -d - | FileCheck %s 2 3 // Test that we avoid relaxing these instructions and instead generate versions 4 // that use 8-bit immediate values. 5 6 bar: 7 // CHECK: Disassembly of section imul: 8 // CHECK-NEXT: imul: 9 // CHECK-NEXT: 0: 66 6b db 80 imulw $-128, %bx, %bx 10 // CHECK-NEXT: 4: 66 6b 1c 25 00 00 00 00 7f imulw $127, 0, %bx 11 // CHECK-NEXT: d: 6b db 00 imull $0, %ebx, %ebx 12 // CHECK-NEXT: 10: 6b 1c 25 00 00 00 00 01 imull $1, 0, %ebx 13 // CHECK-NEXT: 18: 48 6b db ff imulq $-1, %rbx, %rbx 14 // CHECK-NEXT: 1c: 48 6b 1c 25 00 00 00 00 2a imulq $42, 0, %rbx 15 .section imul,"x" 16 imul $-128, %bx, %bx 17 imul $127, bar, %bx 18 imul $0, %ebx, %ebx 19 imul $1, bar, %ebx 20 imul $-1, %rbx, %rbx 21 imul $42, bar, %rbx 22 23 24 // CHECK: Disassembly of section and: 25 // CHECK-NEXT: and: 26 // CHECK-NEXT: 0: 66 83 e3 7f andw $127, %bx 27 // CHECK-NEXT: 4: 66 83 24 25 00 00 00 00 00 andw $0, 0 28 // CHECK-NEXT: d: 83 e3 01 andl $1, %ebx 29 // CHECK-NEXT: 10: 83 24 25 00 00 00 00 ff andl $-1, 0 30 // CHECK-NEXT: 18: 48 83 e3 2a andq $42, %rbx 31 // CHECK-NEXT: 1c: 48 83 24 25 00 00 00 00 80 andq $-128, 0 32 .section and,"x" 33 and $127, %bx 34 andw $0, bar 35 and $1, %ebx 36 andl $-1, bar 37 and $42, %rbx 38 andq $-128, bar 39 40 // CHECK: Disassembly of section or: 41 // CHECK-NEXT: or: 42 // CHECK-NEXT: 0: 66 83 cb 00 orw $0, %bx 43 // CHECK-NEXT: 4: 66 83 0c 25 00 00 00 00 01 orw $1, 0 44 // CHECK-NEXT: d: 83 cb ff orl $-1, %ebx 45 // CHECK-NEXT: 10: 83 0c 25 00 00 00 00 2a orl $42, 0 46 // CHECK-NEXT: 18: 48 83 cb 80 orq $-128, %rbx 47 // CHECK-NEXT: 1c: 48 83 0c 25 00 00 00 00 7f orq $127, 0 48 .section or,"x" 49 or $0, %bx 50 orw $1, bar 51 or $-1, %ebx 52 orl $42, bar 53 or $-128, %rbx 54 orq $127, bar 55 56 // CHECK: Disassembly of section xor: 57 // CHECK-NEXT: xor: 58 // CHECK-NEXT: 0: 66 83 f3 01 xorw $1, %bx 59 // CHECK-NEXT: 4: 66 83 34 25 00 00 00 00 ff xorw $-1, 0 60 // CHECK-NEXT: d: 83 f3 2a xorl $42, %ebx 61 // CHECK-NEXT: 10: 83 34 25 00 00 00 00 80 xorl $-128, 0 62 // CHECK-NEXT: 18: 48 83 f3 7f xorq $127, %rbx 63 // CHECK-NEXT: 1c: 48 83 34 25 00 00 00 00 00 xorq $0, 0 64 .section xor,"x" 65 xor $1, %bx 66 xorw $-1, bar 67 xor $42, %ebx 68 xorl $-128, bar 69 xor $127, %rbx 70 xorq $0, bar 71 72 // CHECK: Disassembly of section add: 73 // CHECK-NEXT: add: 74 // CHECK-NEXT: 0: 66 83 c3 ff addw $-1, %bx 75 // CHECK-NEXT: 4: 66 83 04 25 00 00 00 00 2a addw $42, 0 76 // CHECK-NEXT: d: 83 c3 80 addl $-128, %ebx 77 // CHECK-NEXT: 10: 83 04 25 00 00 00 00 7f addl $127, 0 78 // CHECK-NEXT: 18: 48 83 c3 00 addq $0, %rbx 79 // CHECK-NEXT: 1c: 48 83 04 25 00 00 00 00 01 addq $1, 0 80 .section add,"x" 81 add $-1, %bx 82 addw $42, bar 83 add $-128, %ebx 84 addl $127, bar 85 add $0, %rbx 86 addq $1, bar 87 88 // CHECK: Disassembly of section sub: 89 // CHECK-NEXT: sub: 90 // CHECK-NEXT: 0: 66 83 eb 2a subw $42, %bx 91 // CHECK-NEXT: 4: 66 83 2c 25 00 00 00 00 80 subw $-128, 0 92 // CHECK-NEXT: d: 83 eb 7f subl $127, %ebx 93 // CHECK-NEXT: 10: 83 2c 25 00 00 00 00 00 subl $0, 0 94 // CHECK-NEXT: 18: 48 83 eb 01 subq $1, %rbx 95 // CHECK-NEXT: 1c: 48 83 2c 25 00 00 00 00 ff subq $-1, 0 96 .section sub,"x" 97 sub $42, %bx 98 subw $-128, bar 99 sub $127, %ebx 100 subl $0, bar 101 sub $1, %rbx 102 subq $-1, bar 103 104 // CHECK: Disassembly of section cmp: 105 // CHECK-NEXT: cmp: 106 // CHECK-NEXT: 0: 66 83 fb 80 cmpw $-128, %bx 107 // CHECK-NEXT: 4: 66 83 3c 25 00 00 00 00 7f cmpw $127, 0 108 // CHECK-NEXT: d: 83 fb 00 cmpl $0, %ebx 109 // CHECK-NEXT: 10: 83 3c 25 00 00 00 00 01 cmpl $1, 0 110 // CHECK-NEXT: 18: 48 83 fb ff cmpq $-1, %rbx 111 // CHECK-NEXT: 1c: 48 83 3c 25 00 00 00 00 2a cmpq $42, 0 112 .section cmp,"x" 113 cmp $-128, %bx 114 cmpw $127, bar 115 cmp $0, %ebx 116 cmpl $1, bar 117 cmp $-1, %rbx 118 cmpq $42, bar 119 120 // CHECK: Disassembly of section push: 121 // CHECK-NEXT: push: 122 // CHECK-NEXT: 0: 66 6a 80 pushw $-128 123 // CHECK-NEXT: 3: 66 6a 7f pushw $127 124 // CHECK-NEXT: 6: 6a 80 pushq $-128 125 // CHECK-NEXT: 8: 6a 7f pushq $127 126 .section push,"x" 127 pushw $-128 128 pushw $127 129 push $-128 130 push $127 131