1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-objdump -d - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Test that we correctly relax these instructions into versions that use 4*9880d681SAndroid Build Coastguard Worker// 16 or 32 bit immediate values. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerbar: 7*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section imul: 8*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: imul: 9*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 69 1d 00 00 00 00 00 00 imulw $0, (%rip), %bx 10*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 69 1d 00 00 00 00 00 00 00 00 imull $0, (%rip), %ebx 11*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 69 1d 00 00 00 00 00 00 00 00 imulq $0, (%rip), %rbx 12*9880d681SAndroid Build Coastguard Worker .section imul,"x" 13*9880d681SAndroid Build Coastguard Worker imul $foo, bar(%rip), %bx 14*9880d681SAndroid Build Coastguard Worker imul $foo, bar(%rip), %ebx 15*9880d681SAndroid Build Coastguard Worker imul $foo, bar(%rip), %rbx 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section and: 19*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: and: 20*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 81 25 00 00 00 00 00 00 andw $0, (%rip) 21*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 81 25 00 00 00 00 00 00 00 00 andl $0, (%rip) 22*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 81 25 00 00 00 00 00 00 00 00 andq $0, (%rip) 23*9880d681SAndroid Build Coastguard Worker .section and,"x" 24*9880d681SAndroid Build Coastguard Worker andw $foo, bar(%rip) 25*9880d681SAndroid Build Coastguard Worker andl $foo, bar(%rip) 26*9880d681SAndroid Build Coastguard Worker andq $foo, bar(%rip) 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section or: 29*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: or: 30*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 81 0d 00 00 00 00 00 00 orw $0, (%rip) 31*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 81 0d 00 00 00 00 00 00 00 00 orl $0, (%rip) 32*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 81 0d 00 00 00 00 00 00 00 00 orq $0, (%rip) 33*9880d681SAndroid Build Coastguard Worker .section or,"x" 34*9880d681SAndroid Build Coastguard Worker orw $foo, bar(%rip) 35*9880d681SAndroid Build Coastguard Worker orl $foo, bar(%rip) 36*9880d681SAndroid Build Coastguard Worker orq $foo, bar(%rip) 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section xor: 39*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: xor: 40*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 81 35 00 00 00 00 00 00 xorw $0, (%rip) 41*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 81 35 00 00 00 00 00 00 00 00 xorl $0, (%rip) 42*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 81 35 00 00 00 00 00 00 00 00 xorq $0, (%rip) 43*9880d681SAndroid Build Coastguard Worker .section xor,"x" 44*9880d681SAndroid Build Coastguard Worker xorw $foo, bar(%rip) 45*9880d681SAndroid Build Coastguard Worker xorl $foo, bar(%rip) 46*9880d681SAndroid Build Coastguard Worker xorq $foo, bar(%rip) 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section add: 49*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: add: 50*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 81 05 00 00 00 00 00 00 addw $0, (%rip) 51*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 81 05 00 00 00 00 00 00 00 00 addl $0, (%rip) 52*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 81 05 00 00 00 00 00 00 00 00 addq $0, (%rip) 53*9880d681SAndroid Build Coastguard Worker .section add,"x" 54*9880d681SAndroid Build Coastguard Worker addw $foo, bar(%rip) 55*9880d681SAndroid Build Coastguard Worker addl $foo, bar(%rip) 56*9880d681SAndroid Build Coastguard Worker addq $foo, bar(%rip) 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section sub: 59*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: sub: 60*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 81 2d 00 00 00 00 00 00 subw $0, (%rip) 61*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 81 2d 00 00 00 00 00 00 00 00 subl $0, (%rip) 62*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 81 2d 00 00 00 00 00 00 00 00 subq $0, (%rip) 63*9880d681SAndroid Build Coastguard Worker .section sub,"x" 64*9880d681SAndroid Build Coastguard Worker subw $foo, bar(%rip) 65*9880d681SAndroid Build Coastguard Worker subl $foo, bar(%rip) 66*9880d681SAndroid Build Coastguard Worker subq $foo, bar(%rip) 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker// CHECK: Disassembly of section cmp: 69*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: cmp: 70*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0: 66 81 3d 00 00 00 00 00 00 cmpw $0, (%rip) 71*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 9: 81 3d 00 00 00 00 00 00 00 00 cmpl $0, (%rip) 72*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 13: 48 81 3d 00 00 00 00 00 00 00 00 cmpq $0, (%rip) 73*9880d681SAndroid Build Coastguard Worker .section cmp,"x" 74*9880d681SAndroid Build Coastguard Worker cmpw $foo, bar(%rip) 75*9880d681SAndroid Build Coastguard Worker cmpl $foo, bar(%rip) 76*9880d681SAndroid Build Coastguard Worker cmpq $foo, bar(%rip) 77