| OLD | NEW |
| 1 ; RUN: llc < %s -O0 -mtriple=x86_64-unknown-unknown -mcpu=corei7 -verify-machine
instrs -show-mc-encoding | FileCheck %s --check-prefix X64 | 1 ; RUN: llc < %s -O0 -mtriple=x86_64-unknown-unknown -mcpu=corei7 -verify-machine
instrs -show-mc-encoding | FileCheck %s --check-prefix X64 |
| 2 ; RUN: llc < %s -O0 -mtriple=i386-unknown-unknown -mcpu=corei7 -verify-machinein
strs | FileCheck %s --check-prefix X32 | 2 ; RUN: llc < %s -O0 -mtriple=i386-unknown-unknown -mcpu=corei7 -verify-machinein
strs | FileCheck %s --check-prefix X32 |
| 3 | 3 |
| 4 @sc16 = external global i16 | 4 @sc16 = external global i16 |
| 5 | 5 |
| 6 define void @atomic_fetch_add16() nounwind { | 6 define void @atomic_fetch_add16() nounwind { |
| 7 ; X64-LABEL: atomic_fetch_add16 | 7 ; X64-LABEL: atomic_fetch_add16 |
| 8 ; X32-LABEL: atomic_fetch_add16 | 8 ; X32-LABEL: atomic_fetch_add16 |
| 9 entry: | 9 entry: |
| 10 ; 32-bit | 10 ; 32-bit |
| 11 %t1 = atomicrmw add i16* @sc16, i16 1 acquire | 11 %t1 = atomicrmw add i16* @sc16, i16 1 acquire |
| 12 ; X64: lock | 12 ; X64: lock |
| 13 ; X64: incw | 13 ; X64: incw |
| 14 ; X32: lock | 14 ; X32: lock |
| 15 ; X32: incw | 15 ; X32: incw |
| 16 %t2 = atomicrmw add i16* @sc16, i16 3 acquire | 16 %t2 = atomicrmw add i16* @sc16, i16 3 acquire |
| 17 ; X64: lock | 17 ; X64: lock |
| 18 ; X64: addw $3, {{.*}} # encoding: [0xf0,0x66 | 18 ; X64: addw $3, {{.*}} # encoding: [0x66,0xf0 |
| 19 ; X32: lock | 19 ; X32: lock |
| 20 ; X32: addw $3 | 20 ; X32: addw $3 |
| 21 %t3 = atomicrmw add i16* @sc16, i16 5 acquire | 21 %t3 = atomicrmw add i16* @sc16, i16 5 acquire |
| 22 ; X64: lock | 22 ; X64: lock |
| 23 ; X64: xaddw {{.*}} # encoding: [0xf0,0x66 | 23 ; X64: xaddw {{.*}} # encoding: [0x66,0xf0 |
| 24 ; X32: lock | 24 ; X32: lock |
| 25 ; X32: xaddw | 25 ; X32: xaddw |
| 26 %t4 = atomicrmw add i16* @sc16, i16 %t3 acquire | 26 %t4 = atomicrmw add i16* @sc16, i16 %t3 acquire |
| 27 ; X64: lock | 27 ; X64: lock |
| 28 ; X64: addw {{.*}} # encoding: [0xf0,0x66 | 28 ; X64: addw {{.*}} # encoding: [0x66,0xf0 |
| 29 ; X32: lock | 29 ; X32: lock |
| 30 ; X32: addw | 30 ; X32: addw |
| 31 ret void | 31 ret void |
| 32 ; X64: ret | 32 ; X64: ret |
| 33 ; X32: ret | 33 ; X32: ret |
| 34 } | 34 } |
| 35 | 35 |
| 36 define void @atomic_fetch_sub16() nounwind { | 36 define void @atomic_fetch_sub16() nounwind { |
| 37 ; X64-LABEL: atomic_fetch_sub16 | 37 ; X64-LABEL: atomic_fetch_sub16 |
| 38 ; X32-LABEL: atomic_fetch_sub16 | 38 ; X32-LABEL: atomic_fetch_sub16 |
| 39 %t1 = atomicrmw sub i16* @sc16, i16 1 acquire | 39 %t1 = atomicrmw sub i16* @sc16, i16 1 acquire |
| 40 ; X64: lock | 40 ; X64: lock |
| 41 ; X64: decw | 41 ; X64: decw |
| 42 ; X32: lock | 42 ; X32: lock |
| 43 ; X32: decw | 43 ; X32: decw |
| 44 %t2 = atomicrmw sub i16* @sc16, i16 3 acquire | 44 %t2 = atomicrmw sub i16* @sc16, i16 3 acquire |
| 45 ; X64: lock | 45 ; X64: lock |
| 46 ; X64: subw $3, {{.*}} # encoding: [0xf0,0x66 | 46 ; X64: subw $3, {{.*}} # encoding: [0x66,0xf0 |
| 47 ; X32: lock | 47 ; X32: lock |
| 48 ; X32: subw $3 | 48 ; X32: subw $3 |
| 49 %t3 = atomicrmw sub i16* @sc16, i16 5 acquire | 49 %t3 = atomicrmw sub i16* @sc16, i16 5 acquire |
| 50 ; X64: lock | 50 ; X64: lock |
| 51 ; X64: xaddw {{.*}} # encoding: [0xf0,0x66 | 51 ; X64: xaddw {{.*}} # encoding: [0x66,0xf0 |
| 52 ; X32: lock | 52 ; X32: lock |
| 53 ; X32: xaddw | 53 ; X32: xaddw |
| 54 %t4 = atomicrmw sub i16* @sc16, i16 %t3 acquire | 54 %t4 = atomicrmw sub i16* @sc16, i16 %t3 acquire |
| 55 ; X64: lock | 55 ; X64: lock |
| 56 ; X64: subw {{.*}} # encoding: [0xf0,0x66 | 56 ; X64: subw {{.*}} # encoding: [0x66,0xf0 |
| 57 ; X32: lock | 57 ; X32: lock |
| 58 ; X32: subw | 58 ; X32: subw |
| 59 ret void | 59 ret void |
| 60 ; X64: ret | 60 ; X64: ret |
| 61 ; X32: ret | 61 ; X32: ret |
| 62 } | 62 } |
| 63 | 63 |
| 64 define void @atomic_fetch_and16() nounwind { | 64 define void @atomic_fetch_and16() nounwind { |
| 65 ; X64-LABEL: atomic_fetch_and16 | 65 ; X64-LABEL: atomic_fetch_and16 |
| 66 ; X32-LABEL: atomic_fetch_and16 | 66 ; X32-LABEL: atomic_fetch_and16 |
| 67 %t1 = atomicrmw and i16* @sc16, i16 3 acquire | 67 %t1 = atomicrmw and i16* @sc16, i16 3 acquire |
| 68 ; X64: lock | 68 ; X64: lock |
| 69 ; X64: andw $3, {{.*}} # encoding: [0xf0,0x66 | 69 ; X64: andw $3, {{.*}} # encoding: [0x66,0xf0 |
| 70 ; X32: lock | 70 ; X32: lock |
| 71 ; X32: andw $3 | 71 ; X32: andw $3 |
| 72 %t2 = atomicrmw and i16* @sc16, i16 5 acquire | 72 %t2 = atomicrmw and i16* @sc16, i16 5 acquire |
| 73 ; X64: andl | 73 ; X64: andl |
| 74 ; X64: lock | 74 ; X64: lock |
| 75 ; X64: cmpxchgw | 75 ; X64: cmpxchgw |
| 76 ; X32: andl | 76 ; X32: andl |
| 77 ; X32: lock | 77 ; X32: lock |
| 78 ; X32: cmpxchgw | 78 ; X32: cmpxchgw |
| 79 %t3 = atomicrmw and i16* @sc16, i16 %t2 acquire | 79 %t3 = atomicrmw and i16* @sc16, i16 %t2 acquire |
| 80 ; X64: lock | 80 ; X64: lock |
| 81 ; X64: andw {{.*}} # encoding: [0xf0,0x66 | 81 ; X64: andw {{.*}} # encoding: [0x66,0xf0 |
| 82 ; X32: lock | 82 ; X32: lock |
| 83 ; X32: andw | 83 ; X32: andw |
| 84 ret void | 84 ret void |
| 85 ; X64: ret | 85 ; X64: ret |
| 86 ; X32: ret | 86 ; X32: ret |
| 87 } | 87 } |
| 88 | 88 |
| 89 define void @atomic_fetch_or16() nounwind { | 89 define void @atomic_fetch_or16() nounwind { |
| 90 ; X64-LABEL: atomic_fetch_or16 | 90 ; X64-LABEL: atomic_fetch_or16 |
| 91 ; X32-LABEL: atomic_fetch_or16 | 91 ; X32-LABEL: atomic_fetch_or16 |
| 92 %t1 = atomicrmw or i16* @sc16, i16 3 acquire | 92 %t1 = atomicrmw or i16* @sc16, i16 3 acquire |
| 93 ; X64: lock | 93 ; X64: lock |
| 94 ; X64: orw $3, {{.*}} # encoding: [0xf0,0x66 | 94 ; X64: orw $3, {{.*}} # encoding: [0x66,0xf0 |
| 95 ; X32: lock | 95 ; X32: lock |
| 96 ; X32: orw $3 | 96 ; X32: orw $3 |
| 97 %t2 = atomicrmw or i16* @sc16, i16 5 acquire | 97 %t2 = atomicrmw or i16* @sc16, i16 5 acquire |
| 98 ; X64: orl | 98 ; X64: orl |
| 99 ; X64: lock | 99 ; X64: lock |
| 100 ; X64: cmpxchgw | 100 ; X64: cmpxchgw |
| 101 ; X32: orl | 101 ; X32: orl |
| 102 ; X32: lock | 102 ; X32: lock |
| 103 ; X32: cmpxchgw | 103 ; X32: cmpxchgw |
| 104 %t3 = atomicrmw or i16* @sc16, i16 %t2 acquire | 104 %t3 = atomicrmw or i16* @sc16, i16 %t2 acquire |
| 105 ; X64: lock | 105 ; X64: lock |
| 106 ; X64: orw {{.*}} # encoding: [0xf0,0x66 | 106 ; X64: orw {{.*}} # encoding: [0x66,0xf0 |
| 107 ; X32: lock | 107 ; X32: lock |
| 108 ; X32: orw | 108 ; X32: orw |
| 109 ret void | 109 ret void |
| 110 ; X64: ret | 110 ; X64: ret |
| 111 ; X32: ret | 111 ; X32: ret |
| 112 } | 112 } |
| 113 | 113 |
| 114 define void @atomic_fetch_xor16() nounwind { | 114 define void @atomic_fetch_xor16() nounwind { |
| 115 ; X64-LABEL: atomic_fetch_xor16 | 115 ; X64-LABEL: atomic_fetch_xor16 |
| 116 ; X32-LABEL: atomic_fetch_xor16 | 116 ; X32-LABEL: atomic_fetch_xor16 |
| 117 %t1 = atomicrmw xor i16* @sc16, i16 3 acquire | 117 %t1 = atomicrmw xor i16* @sc16, i16 3 acquire |
| 118 ; X64: lock | 118 ; X64: lock |
| 119 ; X64: xorw $3, {{.*}} # encoding: [0xf0,0x66 | 119 ; X64: xorw $3, {{.*}} # encoding: [0x66,0xf0 |
| 120 ; X32: lock | 120 ; X32: lock |
| 121 ; X32: xorw $3 | 121 ; X32: xorw $3 |
| 122 %t2 = atomicrmw xor i16* @sc16, i16 5 acquire | 122 %t2 = atomicrmw xor i16* @sc16, i16 5 acquire |
| 123 ; X64: xorl | 123 ; X64: xorl |
| 124 ; X64: lock | 124 ; X64: lock |
| 125 ; X64: cmpxchgw | 125 ; X64: cmpxchgw |
| 126 ; X32: xorl | 126 ; X32: xorl |
| 127 ; X32: lock | 127 ; X32: lock |
| 128 ; X32: cmpxchgw | 128 ; X32: cmpxchgw |
| 129 %t3 = atomicrmw xor i16* @sc16, i16 %t2 acquire | 129 %t3 = atomicrmw xor i16* @sc16, i16 %t2 acquire |
| 130 ; X64: lock | 130 ; X64: lock |
| 131 ; X64: xorw {{.*}} # encoding: [0xf0,0x66 | 131 ; X64: xorw {{.*}} # encoding: [0x66,0xf0 |
| 132 ; X32: lock | 132 ; X32: lock |
| 133 ; X32: xorw | 133 ; X32: xorw |
| 134 ret void | 134 ret void |
| 135 ; X64: ret | 135 ; X64: ret |
| 136 ; X32: ret | 136 ; X32: ret |
| 137 } | 137 } |
| 138 | 138 |
| 139 define void @atomic_fetch_nand16(i16 %x) nounwind { | 139 define void @atomic_fetch_nand16(i16 %x) nounwind { |
| 140 ; X64-LABEL: atomic_fetch_nand16 | 140 ; X64-LABEL: atomic_fetch_nand16 |
| 141 ; X32-LABEL: atomic_fetch_nand16 | 141 ; X32-LABEL: atomic_fetch_nand16 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 define void @atomic_fetch_swap16(i16 %x) nounwind { | 258 define void @atomic_fetch_swap16(i16 %x) nounwind { |
| 259 %t1 = atomicrmw xchg i16* @sc16, i16 %x acquire | 259 %t1 = atomicrmw xchg i16* @sc16, i16 %x acquire |
| 260 ; X64-NOT: lock | 260 ; X64-NOT: lock |
| 261 ; X64: xchgw | 261 ; X64: xchgw |
| 262 ; X32-NOT: lock | 262 ; X32-NOT: lock |
| 263 ; X32: xchgw | 263 ; X32: xchgw |
| 264 ret void | 264 ret void |
| 265 ; X64: ret | 265 ; X64: ret |
| 266 ; X32: ret | 266 ; X32: ret |
| 267 } | 267 } |
| OLD | NEW |