| ; 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 | |
| } |