| ; RUN: not llc -mtriple=x86_64-unknown-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s |
| |
| ; Verify that inline asm with inteldialect correctly rejects a negative scale |
| ; factor in an address expression (e.g. [rax - 8 * rdx]) instead of silently |
| ; inverting the sign and producing [rax + 8*rdx]. |
| |
| ; CHECK: error: Scale can't be negative |
| |
| define i64 @test_neg_scale(i64 %0) { |
| %result = call i64 asm sideeffect alignstack inteldialect |
| "xor rax, rax\0Alea rax, [rax - 8 * rdx]", |
| "=&{ax},{dx},~{dirflag},~{fpsr},~{flags},~{memory}"(i64 %0) |
| ret i64 %result |
| } |